• Django笔记07


    forms组件

     forms可以完成

      1 生成前端html代码

      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

    渲染标签

      froms组件三种渲染方式

    第一种(封装程度太高,没法做扩展,不推荐使用)
      {{ 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>

    展示报错信息

      在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失效策略

    https://www.cnblogs.com/Dominic-Ji/p/10718365.html#autoid-9-0-0?tdsourcetag=s_pctim_aiomsg

  • 相关阅读:
    Could not resolve com.android.support:appcompat-v7:28.0.0 错误处理
    解决 Could not resolve com.android.tools.build:gradle:3.1.3
    https://maven.google.com 连接不上的解决办法(转)
    jquery操作select(取值,设置选中)
    django 使用 request 获取浏览器发送的参数
    jquery下载,实时更新jquery1.2到最新3.3.1所有版本下载
    myeclipse 8.5反编译插件失效
    再探java基础——对面向对象的理解(2)
    庖丁解牛FPPopover
    去大连
  • 原文地址:https://www.cnblogs.com/LinChengcheng/p/10751432.html
Copyright © 2020-2023  润新知