2016-05-03 85 views
1

我想在django中处理表单。我来自PHP背景,从未使用任何框架。我曾经自己在HTML和后端编写表单的所有字段。我用我自己的方法来验证它们。django形式与引导

现在,来到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

为什么不能在Meta类使用的ModelForm和定义部件在你的表单类?然后你可以确定你的表单元素以'引导友好'的方式呈现,例如'widgets ='name':forms.TextInput( attrs =''''''form-control', ' placeholder':'Title', 'required':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 

*注 - 因为所有的领域都需要(根据你的模型,因为我们在这里使用了一个模型的形式),Django会验证要求所有字段。

在你的模板

然后(假设你传递的上下文中的表单实例,以模板为form),您可以访问像这样每个字段:

... 
... 
<div class='col-md-11'> 
    {{ form.name }} 
</div> 
... 
...