Django笔记07

forms组件html

 forms能够完成前端

  1 生成前端html代码django

  2 校验数据后端

  3 展现校验信息浏览器

 forms组件的使用安全

  1 简单forms组件校验数据服务器

1 写一个forms校验的类
  from django import forms
  class RegForm(forms.Form):
    # forms组件中定义的字段,默认必须传值
    name = forms.CharField(max_length=6)
    pwd = forms.charField(max_length=8,min_length=3)
    email = forms.EmailField()
2 实例化RegForm传值
  # 注意传入的字典的key必须跟类里面的变量名一致,校验的数据能够多传,可是不能少传
  res = RegForm({"name":"dsb","pwd":"123","email":"123@qq.com"})
3 数据是否合法
  res.is_valid() # 若是数据所有验证经过才为True不然为False
4 查看验证经过的数据
  res.cleaned_data # 会将验证同的数据存放到cleaned_data中
5 查看校验失败的数据
  res.errors

渲染标签cookie

  froms组件三种渲染方式session

第一种(封装程度过高,无法作扩展,不推荐使用)
  {{ form_obj.as_p }}
  {{ form_obj.as_ul }}
第二种
  <form>
    <p>{{ form_obj.name.label}}{{ form_obj.name }}</p>
    <p>{{ form_obj.pwd.label}}{{ form_obj.pwd }}</p>
    <p>{{ form_obj.email.label}}{{ form_obj.email }}</p>
  </form>
第三种
  <form>
    {% for foo in form_obj %}
      <p>{{ foo.label }}{{ foo }}</p>
    {% endfor %}
  </form>

展现报错信息spa

  在p标签内添加span标签用于显示错误信息

  <p>{{ foo.label }}{{ foo }} <span>{{ foo.errors.0 }}</span></p>

局部钩子

  导入 from django.core.exceptions import ValidationError

  def clean_字段名称(self):

  self.add_error 添加错误

  校验完成返回校验的字段

全局钩子

  def clean(self):

  校验完成返回self.cleaned_data

forms组件能够实现三大功能,其实就是为modles种的表服务

https://www.cnblogs.com/liuqingzheng/articles/9509775.html

https://www.cnblogs.com/Dominic-Ji/p/9240365.html?tdsourcetag=s_pctim_aiomsg

 

http协议不保存用户状态(信息),Cookie和Session都是为了可以保存用户信息

Cookie

  本质:保存在浏览器上的键值对

  用途:标识当前用户信息

设置Cookie
  django返回的信息都是HttpResponse对象
  res = render()
  res.set_cookies("name","jason")
获取Cookie
  request.COOKIES['key']
  request.COOKIES.get('key')
超时时间
  max_age=None

Session:

  本质:保存在服务器上的键值对

  用途:记录当前用户信息

  session其实也是基于cookie工做的为了数据更加安全,给浏览器存一个随机字符串,将用户信息存在服务端,用户在访问时,拿到随机字符串和后端进行匹配

设置Session(django默认的session过时时间是14天)
  request.session['k1'] = xxx
  # 上面这句话干了三件事
    # 1 内部生成一个随机字符串,一个浏览器对应一个
    # 2 随机数字符串与数据会存入django session表中
    # 3 将随机字符串设置到浏览器的cookie中
获取session
  request.session.get("k1")
删除session
  # 删除当前会话的全部session数据
  request.session.delete() # 只删除django_session表中的数据
  # 删除当前会话数据并删除绘画的Cookie 
  request.session.flush() # 表和浏览器的session都删除
设置会话session和cookie的超时时间
  request.seesion.set_expiry(value) # value值同cookie设置超时时间相同
  若是value是整数,session会在些秒后失效
  若是value是datatime或timedalta,会在这个时间后失效
  若是value是0,会在用户关闭浏览器后失效
  若是value是None,session会依赖全局session失效策略

 

http://www.javashuo.com/article/p-fjrczegi-s.html