zoukankan      html  css  js  c++  java
  • python web django 2nd level -- 待更新

    练习代码位置

    实例代码位置 --> app: myblog

    Form

    利用Form表单验证,自己写的html
        思路:
            新建一个类 LoginForm(forms.Form)
            新建对象 obj = LoginForm(request.Post)
            常用方法:
                obj.is_valid()
                obj.clean()
                obj.errors.as_json()
                
        验证字段类型:  --- 和models的成员基本一致
            CharField()
            IntegerField()
            EmailField()
            
            字段参数:
                required
                max_length min_length
                自定义验证器:
                    validators=[func]   # 自定义验证类型,如果不合法,直接raise就好  注意传过去的数据类型
                    
                个性化提示:
                error_messages={"required":"不能为空","invalid":"不合法哦"}
                
                个性化外观
                mychoices = ((1,"female"),(1, "male"),)
                widget=forms.Select(choices=mychoices, attrs={"k1":"v1"})
            
            
            
    自动生成html
            思路:
                1、 和上面一样
                2、 把loginForm_obj 传给前端,前端自己拿数据 
                    {% obj.username %}
                    {%obj.password %}
                    {%obj.errors.username.0 %}
                    {%obj.errors.password.0 %}
    

    ModelForm

    CSRF

        网站不允许直接post数据,需要先get一次数据,返回的时候网站返回一个token给页面,页面下次访问的时候会带着token过来
    

    form 方式

        外兜
        这种比较简单,直接提交表单就行了
        因为表单里面直接有一个hidden的input widget
    

    ajax 方式

        内兜
        需要自己去获取cookie,然后提交给网站
            注意要导入jquery  and  js.cookie.js
            
            <script src="/static/plugin/jquery/jquery-1.8.0.js"></script>
            <script src="/static/plugin/jquery/jquery.cookie.js"></script>
        
            var csrftoken = $.cookie('csrftoken');
      
            function csrfSafeMethod(method) {
                // these HTTP methods do not require CSRF protection
                return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
            }
            
            //每次ajax请求之前都会执行这个函数
            $.ajaxSetup({
                beforeSend: function(xhr, settings) {
                    if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                        xhr.setRequestHeader("X-CSRFToken", csrftoken);
                    }
                }
            });
    

    cookie and session

    概述

    cookie  存在前端浏览器里面的一个字符串
            默认不能跨域名访问
    session 存在后端服务器上的一个状态信息 e.g. 登录状态
    
    设置:
        obj = render(reqeust, "/static/myblog/cookie.html")
        obj.set_ookie("k1","v1")  # 把cookie写入html中
        obj.set_cookie(key,value, max_age, path="/")
            max_age: 过期时间, 单位秒
            path:  该cookie只在path下面能使用,默认是 / ,对该域名全局生效
        
    获取:
        cookie_cli = request.COOKIES  # 获取到的是一个字典
    

    session

    概述:
        session 依赖于cookie实现功能,会把session_id 利用cookie的渠道写入浏览器,敏感信息放到服务上
        session_id 对开发者隐藏,不用管, session_id 唯一标识一个浏览器
        django 默认支持session,默认存储到数据库中 table: django_session 过期时间  两周
        
    使用:
        当成一个字典使用
        request.session["user"] = "yangli"
        def request.session["user"]
        request.session.delete(request.session.session_key)
        
    session 存放位置配置 settings.py 配置文件即可
        db
        cache
        file
        cached_db
        signed_cookies
    
    • level1
    • level2
      • level2-1
      • level2-2
    • level3
  • 相关阅读:
    TP隐藏入口
    CentOs5.2中PHP的升级
    centos 关闭不使用的服务
    也不知怎么了LVS.SH找不到,网上搜了一篇环境搭配CENTOS下面的高可用 参考
    三台CentOS 5 Linux LVS 的DR 模式http负载均衡安装步骤
    分享Centos作为WEB服务器的防火墙规则
    Openssl生成根证书、服务器证书并签核证书
    生成apache证书(https应用)
    openssl生成https证书 (转)
    ls -l 列表信息详解
  • 原文地址:https://www.cnblogs.com/fepapa/p/5989973.html
Copyright © 2011-2022 走看看