### ChoiceField
/hello/forms.py
class HelloForm(forms.Form): data = [ ('one', 'item 1'), ('two', 'item 2'), ('three', 'item 3') ] choice = forms.ChoiceField(label='Choice', choices=data)
/hello/views.py
def post(self, request): ch = request.POST['choice'] self.params['result'] = 'you selected: "' + ch + '".' self.params['form'] = HelloForm(request.POST) return render(request, 'hello/index.html', self.params)
### ラジオボタン
– radioもChoiceFieldを使って作成する
– forms.ChoiceField(choices=value, widget=forms.RadioSelect())
/hello/forms.py
class HelloForm(forms.Form): data = [ ('one', 'item 1'), ('two', 'item 2'), ('three', 'item 3') ] choice = forms.ChoiceField(label='radio', choices=data, widget=forms.RadioSelect())
### 選択リスト
– forms.ChoiceField(choices=value, widget=forms.Select())
/hello/forms.py
class HelloForm(forms.Form): data = [ ('one', 'item 1'), ('two', 'item 2'), ('three', 'item 3'), ('four', 'item 4'), ('five', 'item 5'), ] choice = forms.ChoiceField(label='radio', choices=data, widget=forms.Select(attrs={'size':5}))
### 複数選択
– forms.MultipleChoiceField(choices=value, widget=forms.SelectMultiple())
/hello/forms.py
class HelloForm(forms.Form): data = [ ('one', 'item 1'), ('two', 'item 2'), ('three', 'item 3'), ('four', 'item 4'), ('five', 'item 5'), ] choice = forms.MultipleChoiceField(label='radio', choices=data, widget=forms.SelectMultiple(attrs={'size':6}))
– 複数項目はgetlistで取得する
/hello/views.py
def post(self, request): ch = request.POST.getlist('choice') self.params['result'] = 'you selected: "' + str(ch) + '".' self.params['form'] = HelloForm(request.POST) return render(request, 'hello/index.html', self.params)
views.py側でfor文をかける
def post(self, request): ch = request.POST.getlist('choice') result = '<ol class="list-group"><b>selected:</b>' for item in ch: result += '<li class="list-group-item">' + item + '</li>' result += '</ol>' self.params['result'] = result self.params['form'] = HelloForm(request.POST) return render(request, 'hello/index.html', self.params)
forms.pyでデータ型を用意して、views.pyでそれを利用するってイメージか。