diadia

趣味のプログラムを書く 

formの扱い方

フォームについて

 

フォームにはFormViewとforms.pyがあるみたい。
知っているforms.pyについてのみ記載する。

 

forms.pyの使いかた

ディレクトリはアプリケーションで指定したところ。そこにforms.pyを作成する。

forms.py の中身はクラス指定して作りたい入力フォームを記載する。

 

from django import forms

class RegisterForm(forms.Form):

    user = forms.CharField()
    email = forms.EmailField()
    password = forms.CharField()

これで入力フォームができる。
これを記述するとinputタグとほぼ同じ役割があると思って良い。
inputタグの場合class指定、placeholder指定やname指定していたけど、それらはFieldの括弧内で指定することになる。
下に記述する。
 

次にviews.py にて

from .forms import RegisterForm

def user_register(request) :

    form = RegisterForm()
return render(request, 'register.html',form) 


そしてregister.htmlの{{ form }}を記載したところに入力フォームが表示されることになる。
イメージ的には下記のようになる。

<form method="POST">{% csrf_token %}
{{ form }}
<button >submit</button>

これでhtmlに反映されるようになる。


最後にinputタグと同じようにclassやplaceholderをどのようにすれば設定できるのかを書く。
フィールド括弧内の内容だけを書く。

widget=forms.TextInput(attrs={"class":"form-control","placehplder":"User Name","name":"user name",})

typeについてはここに含めてもいいと思うけど、ドキュメントは独立して書く方法があるとしている。
ウィジェット | Django documentation | Django


追記
widgetの種類はいっぱいある。これらについて一応仮説がある。
widget=forms.TextInput()の部分で、TextInputの他にEmailInput,Textareaの種類がある。
まずinputタグかtextareaタグかに分かれる。inputタグ系はTextInput,EmailInputである。
Textareaはtextareaタグだ。次にinputタグ系はそれぞれtypeをInput前に表現している。
だからinputタグ系を選んだら、自動的にバリエーション機能も持つことになる。