Django第十四日
一 froms渲染错误信息视图函数模板
二 forms组件参数配置定制模板中的显示样式,及配置类 语法错误信息中文显示语法
三 局部钩子和全局钩子局部钩子的使用局部钩子全局钩子
四 cookie session token五 django中cookie的使用
一 froms渲染错误信息
视图函数
from app01
import MyForm
def register(request
):
if request
.method
=='GET':
form
=myforms
.MyForm
()
return render
(request
, 'register.html',{'form':form
})
else:
form
=myforms
.MyForm
(request
.POST
)
if form
.is_valid
():
return redirect
('http://www.baidu.com')
else:
return render
(request
, 'register.html',{'form':form
})
模板
<form action="" method="post" novalidate>
{% for foo in form %}
<div class="form-group">
<label for="">{{ foo.label }}
</label>
{{ foo }}
<span class="text-danger pull-right">{{ foo.errors }}
</span>
</div>
{% endfor %}
<div class="text-center">
<input type="submit" value="提交" class="btn btn-danger">
</div>
</form>
二 forms组件参数配置
定制模板中的显示样式,及配置类 语法
记得先导入哦from django.form import widget
校验方法的参数加上widget=widgets.PasswordInput(attrs={'class': 'form-control'})
错误信息中文显示语法
校验方法的参数加上error_messages={'min_length': '太短了小伙子'}
综合案例:
class MyForm(forms
.Form
):
name
= forms
.CharField
(required
=False, max_length
=32, min_length
=3, label
='用户名',
widget
=widgets
.TextInput
(attrs
={'class': 'form-control'}),
error_messages
={'min_length': '太短了小伙子'})
password
= forms
.CharField
(required
=False, max_length
=32, min_length
=3, label
='密码',
widget
=widgets
.PasswordInput
(attrs
={'class': 'form-control'}),
error_messages
={'min_length': '太短了小伙子'})
re_password
= forms
.CharField
(required
=False, max_length
=32, min_length
=3, label
='确认密码',
widget
=widgets
.PasswordInput
(attrs
={'class': 'form-control'}),
error_messages
={'min_length': '太短了小伙子'})
email
= forms
.EmailField
(label
='邮箱', error_messages
={'required': '小惠子,这个必填'},
widget
=widgets
.TextInput
(attrs
={'class': 'form-control'}))
age
= forms
.IntegerField
(max_value
=200, min_value
=0, label
='年龄',
widget
=widgets
.TextInput
(attrs
={'class': 'form-control'}))
text
= forms
.CharField
(label
='个人简介', widget
=widgets
.Textarea
(attrs
={'class': 'form-control'}))
date
= forms
.CharField
(label
='出生日期', widget
=widgets
.DateInput
(attrs
={'class': 'form-control'}))
三 局部钩子和全局钩子
局部钩子的使用
在自定义的Form类中写 clean_字段名取出字段的真正值,name=self.cleaned_data.get('name')判断自己的规则,如果判断失败,抛出ValidationError(导入:from django.form import ValidationError)如果通过,return name钩子底层的执行顺序,字段一的基本校验–>字段一局部钩子–>字段二的基本校验->…–>最后一个才是全局钩子 所以若想在局部钩子里对比校验两个字段,会有一个还未生成
局部钩子
def clean_name(self
):
name
= self
.cleaned_data
.get
('name')
if name
.startswith
('sb'):
raise ValidationError
('不能以sb开头')
else:
return name
全局钩子
def clean(self
):
password
= self
.cleaned_data
.get
('password')
re_password
= self
.cleaned_data
.get
('re_password')
if password
== re_password
:
return self
.cleaned_data
else:
raise ValidationError
('两次密码不一致')
四 cookie session token
点击此处看详细情报
cookie:客户端浏览器上的键值对 3 session:存在服务端的键值对 4 token:加密的键值对,如果放在客户端浏览器上,它就叫cookie, 服务端签发的加密字符串 后端校验: 用这个token去查我的账户余额,向银行发请求,银行校验通过,是银行给你的,—> 返回你的余额 head.{name:lqz,age:18}.eseetsweasdca
head.{name:egon,age:18}.eseetsweasdca
五 django中cookie的使用
def cookie_test(request
):
obj
=HttpResponse
('ok')
obj
.set_cookie
('name','egon')
obj
.set_cookie
('age','19')
return obj
def get_cookie(request
):
print(request
.COOKIES
)
print(request
.COOKIES
.get
('name'))
return HttpResponse
('我拿了你传过来的cookie')
def delete_cookie(request
):
obj
=HttpResponse
('我删掉了你 name 这个cookie ')
obj
.delete_cookie
('name')
return obj