python第十九天-----Django进阶

1.机智的小django为我你们提供了快捷的表单验证!

 1 from django.shortcuts import render, HttpResponse,redirect
 2 from django import forms
 3 import json
 4 import re
 5 from django.core.exceptions import ValidationError
 6 
 7 # Create your views here.
 8 
 9 
10 def mobile_validate(value):
11     """
12     自定义规则
13     :param value:
14     :return:
15     """
16     mobile_re =re.compile(r'^(13[0-9]|15[0-9]|17[0-9]|18[0-9])[0-9]{8}$')
17     if not mobile_re.match(value):
18         raise ValidationError('手机号码格式错误')
19 
20 
21 class LoginForm(forms.Form):
22     user = forms.CharField(required=True,
23                            error_messages={'required': '用户名不能为空'})
24     pwd = forms.CharField(required=True,
25                           error_messages={'required': '密码不能为空'})
26     num = forms.IntegerField(required=True,
27                              error_messages={'required': '数字不能为空','invalid': '必须输入数字'})
28     phone = forms.CharField(validators=[mobile_validate])   # 引用匹配函数即可

2.cookie

获取
request.COOKIES['key']
request.get_signed_cookie(key, default=‘123’, salt='', max_age=None)
参数:
    default: 默认值
    salt: 加密
    max_age: 最大保存时间,按秒记时
 1 设置
 2 rep = HttpResponse(...) 或 rep = render(request, ...)
 3  
 4 rep.set_cookie(key,value,...)
 5 rep.set_signed_cookie(key,value,salt='加密',...)
 6     参数:
 7         key,              键
 8         value='',         值
 9         max_age=None,     最大保存时间
10         expires=None,     到什么时间清除
11         path='/',         Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问
12         domain=None,      Cookie生效的域名
13         secure=False,     是否可使用https传输
14         httponly=False    只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

3.session

 1 settings.py
 2 
 3 SESSION_ENGINE = 'django.contrib.sessions.backends.db'   # 数据库引擎(默认)
 4 
 5 SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 缓存引擎
 6 SESSION_CACHE_ALIAS = 'default'                            # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
 7 
 8 SESSION_ENGINE = 'django.contrib.sessions.backends.file'    # 文件引擎
 9 SESSION_FILE_PATH = None                                    # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir(),会在tempfile下生成新文件
10 
11 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'        # 缓存+数据库引擎
12 
13 SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   # 加密cookie引擎
14 SESSION_COOKIE_NAME = "sessionid"                          # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串
15 SESSION_COOKIE_PATH = "/"                                  # Session的cookie保存的路径
16 SESSION_COOKIE_DOMAIN = None                                # Session的cookie保存的域名
17 SESSION_COOKIE_SECURE = False                               # 是否Https传输cookie
18 SESSION_COOKIE_HTTPONLY = True                              # 是否Session的cookie只支持http传输
19 SESSION_COOKIE_AGE = 1209600                                # Session的cookie失效日期(默认2周)
20 SESSION_EXPIRE_AT_BROWSER_CLOSE = False                     # 是否关闭浏览器时Session过期
21 SESSION_SAVE_EVERY_REQUEST = False                          # 是否每次请求都保存Session,默认修改之后才保存
 1 def index(request):
 2     # 获取、设置、删除Session中数据
 3     request.session['k1']
 4     request.session.get('k1', None)
 5     request.session['k1'] = 123
 6     request.session.setdefault('k1', 123)  # 存在则不设置
 7     del request.session['k1']
 8 
 9     # 所有 键、值、键值对
10     request.session.keys()
11     request.session.values()
12     request.session.items()
13     request.session.iterkeys()
14     request.session.itervalues()
15     request.session.iteritems()
16 
17     # 用户session的随机字符串
18     request.session.session_key
19 
20     # 将所有Session失效日期小于当前日期的数据删除,用于清理数据库
21     request.session.clear_expired()
22 
23     # 检查 用户session的随机字符串 在数据库中是否
24     request.session.exists("session_key")
25 
26     # 删除当前用户的所有Session数据
27     request.session.delete("session_key")
1 def auth(func):
2     def inner(request, *args, **kwargs):
3         user = request.session.get('user', None)
4         if not user:
5             return redirect('/session_login/')
6         return func(request, *args, **kwargs)
7     return inner

 

posted @ 2016-12-20 21:59  北方姆Q  阅读(199)  评论(0编辑  收藏  举报