2016-05-03 10 views
1

私はdjangoでフォームを処理しようとしています。私はPHPのバックグラウンドから来て、決してフレームワークを使用しませんでした。私はフォームのすべてのフィールドをHTMLとバックエンドに自分で書きました。私は自分の方法を使ってそれらを検証しました。django形式のブートストラップ

今、ジャンゴに来て、それはモデルフォームを持っています。しかし、私は自分のコードでもブートストラップを使いたいです。だから、私はこのようなHTMLコードを書いた:

<div class='form-group'> 
<label class='control-label col-md-2 col-md-offset-2' for='id_email'>Contact</label> 
<div class='col-md-6'> 
    <div class='form-group'> 
    <div class='col-md-11'> 
     <input class='form-control' id='id_email' placeholder='E-mail' type='text'> 
    </div> 
    </div> 
    <div class='form-group internal'> 
    <div class='col-md-11'> 
     <input class='form-control' id='id_phone' placeholder='Phone: (xxx) - xxx xxxx' type='text'> 
    </div> 
    </div> 
</div> 
</div> 

今、私はそれをバックエンドで検証したいと思う。私のモデルは次のようになります:

class Student(models.Model): 

    def __str__(self): 
     return self.name 

    name = models.CharField(max_length=200) 
    enrollment_no = models.CharField(max_length=10) 
    batch = models.CharField(max_length=4) 
    father_income = models.IntegerField(max_length=100) 
    email = models.CharField(max_length=1000) 
    mobile_number = models.CharField(max_length=1000) 

ここで、上記のフォームを検証するにはどうすればよいですか? これを解決するのを手伝ってください。

+0

あなたのフォームクラスで?フォームエレメントは 'widgets = { 'name':forms.TextInput( attrs = { 'class': 'フォームコントロール'、 'のようなもので、 'タイトル'、 '必須':True、 } )、}}、あなたのフィールドは依然としてフォームクラスによって検証できます。 –

+0

これに関するすべてのドキュメントを教えてください。私はdjangoを初めて使っています。ありがとう。 – learner

+0

https://docs.djangoproject.com/en/1.9/topics/forms/modelforms/#overriding-the-default-fields –

答えて

1

フォームには、djangoのモデルフォームを使用できます。あなたclass Metaでモデルのフォームにいくつかの定義を追加することができます。

class StudentForm(forms.ModelForm): 

    class Meta: 
     model = Student 
     fields = [ 
      'name', 'enrollment_no', # etc... 
     ] 
     widgets = { 
      'name': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'Title', 'required': True, }), 
      'enrollment_no': # etc... 
     } 

    # you can also override validation/clean/save/etc methods here 

*注意 - あなたのすべてのフィールドは、(お使いのモデルによると、私たちはここでモデルのフォームを使用しているため)が要求されるので、ジャンゴますすべてのフィールドを必要とすることを検証します。

は、その後、あなたのテンプレートに(あなたがformとしてテンプレートにコンテキスト内でフォームのインスタンスを渡すと仮定して)あなたはとてもように、各フィールドにアクセスすることができますのModelFormを使用し、メタクラス内のウィジェットを定義していないのはなぜ

... 
... 
<div class='col-md-11'> 
    {{ form.name }} 
</div> 
... 
... 
関連する問題