在前端提交数据的时候,常常需要提交表单数据。
而在Django中可以使用表单类进行简化操作,方便后台对于表单的处理。
例如下面表单类的一个例子:
from django import forms
class ContactForms:
subjects = forms.CharField(max_length = 100)
email = forms.EmailField(required = False)
message = forms.charField(widget = forms.Textarea)
#Django 的 forms系统会自动匹配以clean_开头,以字段名为结束的方法
#当在校验时会被调用
def clean_message(self):
message = self.cleaned_data['message']
num_words = len(message.split())
if num_words < 4:
raise forms.ValidationError("Not enough words!")
return message
#当在view视图中使用时,直接生成即可def contact(request):
if request.method == 'POST':
form = ContactForms(request.POST)
if form.is_valid():
return HttpResponseRedirect('thank.html')
定制Form设计
显示表单除了可以{{form.as_p}},{{form.as_table}},等,也可以使用CSS设计。
每一个字段部件都可以通过访问{{form.字段名}}进行单独渲染,这个地方需要注意,因为前端渲染必须需要采用这些方法。
<html>
<head>
<title>Contact Us</title>
</head>
<!--基本的css样式都可以在这里加-->
<form acton = "" method = "post">
<div class = "field">
<label for = "id_subject" >Subject:</label>
{{form.subject}}
</div>
<div class = "field">
<label for = "id_email" >Email:</label>
{{form.email}}
</div>
<div class = "field">
<label for = "id_message" >Message:</label>
{{form.message}}
</div>
</form>
</html>