模板语言: {% ifequal str|slice: '7' 'teststr' %}:str的前7个字符和 ‘ateststr’是否equal
verbose_name:指明一个易于理解和表述的对象名称。如果这个值没有设置, Django 将会使用该 model 的类名的分词形式作为他的对象表述名: CamelCase 将会转换为 camel case 。
verbose_name_plural:对象的复数表述名,如果没有指定,Django 会使用 verbose_name + "s" 的形式作为对象的表述名
null和blank的区别:null纯粹与数据库相关,blank与验证相关。
null在数据库中表示为空字符串。
CharField同时具有unique = True和blank = True。在这种情况下,需要null = True以避免在使用空值保存多个对象时发生唯一约束违规。
upload_to:上传路径
django在upload_to上内置了strftime()函数:
eg.:avatar = ImageField(upload_to = 'avatar/%Y/%m/%d/')
captcha验证码的原理:
{{ register_form.captcha }}向客户端发送一个验证码图片(图片上为几个字符)并在Django后台哈希生成与该图片上字符相对的一串字符串,存储在数据库上,当用户收到图片并提交验证码后,将用户提交的验证码与Django后台的字符串对比看是否相同。
如何对比?
数据库联合查询,如果相同则能查询到数据,不同则没有数据。
form中属性的名字和html文件中input标签中定义的名字必须一样.
注册流程:
register_view -> send_registr_email -> 得到激活链接 -> 进入激活链接 -> active_view ->将该用户的is_activate字段设为True
提交表单:html页面中form标签,有method字段为“post”,action属性“{% url 'url_name' %}