day22 session登录
day22 知识点概要 - Session - CSRF - Model操作 - Form验证(ModelForm) - 中间件 - 缓存 - 信号 内容详细: 1. Session 基于Cookie做用户验证时:敏感信息不适合放在cookie中 a. Session原理 Cookie是保存在用户浏览器端的键值对 Session是保存在服务器端的键值对 b. Cookie和Session对比 c. Session配置(缺少cache) d. 示例:实现两周自动登陆 - request.session.set_expiry(60*10) - SESSION_SAVE_EVERY_REQUEST = True PS: cookie中不设置超时时间,则表示关闭浏览器自动清除 - session依赖于cookie - 服务器session request.session.get() request.session[x] = x request.session.clear() - 配置文件中设置默认操作(通用配置): SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认) SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认) SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认) SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认) SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认) SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认) # set_cookie('k',123) SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认) - 引擎的配置 2. CSRF a. CSRF原理 b. 无CSRF时存在隐患 c. Form提交(CSRF) {% csrf_token %} d. Ajax提交(CSRF) CSRF请求头 X-CSRFToken from django.views.decorators.csrf import csrf_exempt,csrf_protect 6. 中间件 7. 缓存 5种配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'unique-snowflake', 'TIMEOUT': 300, 'OPTIONS':{ 'MAX_ENTRIES': 300, 'CULL_FREQUENCY': 3, }, } } 3种应用: 全局 视图函数 模板 8. 信号 - 内置信号 - 自定义 - 定义信号 - 出发信号 - 信号中注册函数 3. Model操作 a. 字段类型 + 参数 b. 连表字段 + 参数 c. Meta d. SQL操作: - 基本增删改查 - 进阶操作 - 正反查询 - 其他操作 e. 验证(弱) 4. Form操作 完成: - 验证用户请求 - 生成HTML (保留上一次提交的数据) 自定义: - 类 - 字段(校验) - 插件(生成HTML) 初始化操作: ============= 作业:xxxoo管理 ============= 用户验证:session 新URL:Form验证 中间件:IP过滤 信号:记录操作 CSRF: a. Form验证用户请求 b. Form生成HTML c. Form字段详细(自定义字段,Model...) + 插件 d. 自定义验证(钩子以及__all__) e. 注册示例: 用户名、密码、邮箱、手机号(RegexValidator或RegexField)、性别、爱好、城市 f. 初始化值 5. ModelForm a. Model+Form功能集合 b. save c. save + save_m2m jquery.cookie.js 所有的AJAX请求 <script src="/static/plugin/jquery/jquery-1.8.0.js"></script> <script src="/static/plugin/jquery/jquery.cookie.js"></script> <scripttype="text/javascript"> var csrftoken=$.cookie('csrftoken'); function csrfSafeMethod(method) { //these HTTP methods donotrequire CSRF protection return(/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function(xhr, settings) { if(!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); function Do(){ $.ajax({ url:"/app01/test/", data:{id:1}, type:'POST', success:function(data){ console.log(data); } }); } </script> 本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1925359,如需转载请自行联系原作者