Django表单
作用:(1)自动生成html标签;(2)验证输入内容
class UserForm(forms.Form):
username = forms.CharField(label='用户名', max_length=100)
password = forms.CharField(label='密码',widget=forms.PasswordInput())
email = forms.EmailField(label='电子邮箱')
这里label为网页上显示的提示输入的内容标签,widget=forms.PasswordInput()表示输入的内容不可见。
views.py文件中获取表单提交的数据方式如下:
1.通过GET方式获取参数
一般使用:var = request.GET.get(‘var’, ‘’)
id = request.GET.get('id'. '') #id存在就返回,不存在就返回空
name = request.GET.get('name','') #name存在就返回,否则返回空
2.通过POST方式获取参数
一般使用: var = request.POST.get(‘var’, ‘’)
<form action='/login/' method='POST'>
<input type='text' name='username'>
<input type='password' name='password'>
</form>
username = request.POST.get('username','')
password = request.POST.get('password','')
3.通过自定义的表单POST方式获取参数
表单例子如下:
class UserForm(forms.Form):
username = forms.CharField(label='用户名', max_length=100)
password = forms.CharField(label='密码',widget=forms.PasswordInput())
email = forms.EmailField(label='电子邮箱')
在views.py文件中获取参数的方式如下:
from forms import UserForm
def register(request):
if request.method = 'POST': # 提交方式是POST
uf = UserForm(request.POST)
if uf.is_valid(): #验证提交的数据是否合法
username = request.POST.get('username','')
password = request.POST.get('password','')
# pass #
else: # 显示表单内容
uf = UserForm()
return render('home.html', {'uf':uf})
4.获取表单信息
表单数据的获取一定要在request.method = ‘POST’,if uf.is_valid()内。
表单信息也可以采用如下方式获取:
uf = UserForm(request.POST)
if uf.is_valid(): #验证提交的数据是否合法
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
5.CSRF攻击解决方案
Django对CSRF攻击默认通过调用CSRF令牌插件的方式进行了防范,在调用令牌插件之后,每个表单Form里面应该包括一个CSRF令牌,设置方式是在表单中加入{{ csrf_token }}。如果不使用CSRF令牌,可以在setting.py中将其注释掉。