django----forms

from django import forms

Django会将表单的提交变得更加简单和安全,包括重构数据后在页面间传递,创建前端的HTML页面以及接收和处理客户端传来的数据。实施上,你只需要事先定义好form表单的各种属性,在前端页面简单调用即可。当然,Django为Form提供了许多属性,方便自定义,甚至你可以重写其中的一些方法。

Form对象封装了一系列Field和验证规则,Form类都必须直接或间接继承自django.forms.Form,定义Form有两种方式:

方法一:直接继承Form

from django import forms

class UserForm(forms.Form):  
    user_name = forms.CharField(label='用户名', max_length=30)
    user_password = forms.CharField(label='密码', widget=forms.PasswordInput ())

方法二:结合Model,继承django.forms.ModelForm

#models.py
class Contact(models.Model):
    title = models.CharField(max_length=30)
    content = models.CharField(max_length=20)
 
#form.py
class ConotactForm(ModelForm):
    class Meta:
        model = Contact
        field = ('title','content') #只显示model中指定的字段

在view函数中使用form的一般情景是:

form django.shortcuts import render
form django.http import HttpResponseRedirect
from .forms import *

def contact(request):
    if request.method=="POST":
        form = ContactForm(request.POST)
        if form.is_valid(): #所有验证都通过
              #do something处理业务
        return HttpResponseRedirect('/')
    else:
    form = ContactForm()
    return render(request,'contact.html',{'form':form})

与之对应的html

<form action='/contact/' method='POST'>
    {% for field in form %}
        <div class = 'fieldWrapper'>
            {{field.label_tag}}:{{field}}
            {{field.errors}}
        </div>
    {% endfor %}
    <div class='fieldWrapper'> <p><input type='submit' value='留言'></p></div>
</form>

 

posted @ 2017-08-03 15:59  投以木瓜  阅读(55)  评论(0)    收藏  举报