Table of Contents
-
# 创建一个实例 celery = Celery() # 导入配置文件 包名.文件名 celery_app.config_from_object("celery_tasks.config") # 导入任务 celery_app.autodiscover_tasks("celery_tasks.sms")
-
broker_url = 'redis://192.168.1.103/6'
- 在新创建的包中,存放任务tasks.py
-
@celery_app.task(name="send_sms") #使用装饰器,来装饰一个函数作为任务 def send_sms_code(mobile, sms_code): pass
- 在命令行中: celery -A celery_tasks.main worker -l info
- -A 是任务包名
- worker 自动创建进程
- -l 是日志级别
- 需要在celery_tasks目录上执行
- 导入tasks中的函数(被装饰器装饰的)
- 函数.delay(传递参数)
生产者消费者设计模式
- 生产者
- 中间人(任务队列)
- 消费者
Django 用户登录重写authenticate步骤
- 作用:
- 可以实现用户名和手机号共同登录
- 实现:
- 定义utils文件,定义一个类,继承ModelBackend
- 重写authenticate方法,在里面判断传入参数类型,并调用方法,验证密码
- 在settings文件中定义变量AUTHENTICATION_BACKENDS = [‘’]
- 列表中填写重写authenticate的类(包括包名)
- 然后直接调用authenticate方法就可以
JInja2 使用
- 1.配置settings文件的TEMPLATES
-
# 之前的模板配置最好注释,可能还需要补到后面 TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', 'DIRS': [os.path.join(BASE_DIR, "templates")], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], # 需要添加文件 文件是扩展jinja2的功能 'environment': 'meiduo.utils.jinja2_env.jinja2_environment', }, }, ] # 文件用于environment 包名:'meiduo.utils.jinja2_env.jinja2_environment' def jinja2_environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) return env
-
- http://docs.jinkan.org/docs/jinja2/
LoginRequiredMixin
- 用来提供登录状态验证,
- 没有登录跳转登录链接,
- 登陆了则进行后续操作
- 两个重要的参数
- LOGIN_URL = '/login/' 在settings中定义,或者在子类中定义long_url
- redirect_field_name 默认是next ,从哪来,回哪去(查询参数中保存了地址)
4.扩展延伸知识
-
退出登录时候 django执行了什么
- 清除session中存放的值
- Session使用
- session是加密的,比cookie安全
- session也可以叫会话保持,在建立在cookie之上的
- sessionid中存放了加密的字符串,用来辨别用户的身份
- django使用session
-
set_cookie执行了什么?
- 头文件中,设置setcookie
- 1、name 必需。规定cookie的名称。
- 2、value 必需。规定cookie的值。
- 3、expire 可选。规定cookie的有效时间
- 4、path 可选。
- 规定cookie的服务器路径,浏览器在发送cookie时只会发送对应路径及祖先路径的cookie,如cookieA设置在根下(path:/),cookieB设置在/dir/下,访问dir的请求会带着cookieB和cookieA,但访问根路径的请求只会带着cookieA
- 5、domain 可选。
- 规定cookie的域名。只能设置为当前域或当前域的上级域。例如,一个在a.b.com的页面,可以设置为a.b.com或.b.com 。如果设置为.b.com的话,那么在其它子域中也能访问到。
- 6.secure 可选。
- 规定是否通过安全的HTTPS连接来传输cookie。其值为0或1,如果值为1,则cookie只能在https连接上有效,默认值为0表示cookie在http和https连接上都有效
7、httponly 设置成true,
cookie仅通过http协议访问。意思就是cookie无法通过类似JavaScript这样的脚本语言访问。要有效的减少xss攻击时的身份窃取行为,可建议用此设置(虽然不是所有浏览器都支持),不过这个说法经常有争议,PHP5.2.0中添加。bool值true和false
-
优化一些django的登录细节
-
Django session的一些设置
-
为什么使用session
- -解决cookie不安全的问题,
- -存在服务器上的键值对 {'sdaf随机字符串':{name:lqz,pwd:123}} (返回给浏览器时,把随机字符串返还,这样就保证了信息的安全性)
- -用session必须跟cookie连用
-
配置session
-
settings文件中的一些配置
- 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过期(默认)
- SESSION_SAVE_EVERY_REQUEST = False
- 是否每次请求都保存Session,默认修改之后才保存(默认)
-
session的增删改查
- 增 request.session[‘key’]=0,request.session.setdefault(‘key’,123)
- 删 del request.session[‘key’]
- 改 request.session[‘key’]=1
- 查 request.session.get(‘key’)
-
session所有键值对
- keys(),values(),items(),tierkeys(),itervalues(),iteritems()
-
清除session
- request.session.clear_expired() 清理小于当前日期的session
- request.session.exists(‘sessionid’) 判断是否存在
- request.session.delete(‘sessionid’)指定的session所有数据删除
- request.session.clear() 删除所有session
-
设置session的缓存
- 缓存引擎 SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
- SESSION_CACHE_ALIAS = 'default'
- 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
-
Djaogo Cookie的一些细节
-
django中cookie的使用方法
- response设置cookie
- set_cookie(key,value)
- request取cookie
- request.COOKIE.get(‘key’)
- response 删除Cookie
- response.delete_cookie(‘key’)
- cookie加盐(salt 需要用到解密)
- set_signed_cookie(‘name’,’lqz’,salt=’123’)
- max_age超时时间(秒)
- set_cookie(‘key’,’value’,max_age=6)
-
cookie的一些参数
- path=‘/’ 设置一个url ,只有访问这个url才携带cookie
- domain 设置一个域名,只有这个域名 cookie才有效
- secure=False 默认为假,True则是https传输
- httponly=True 只能https传输,JavaScript无法获取(不绝对)
- Max Age cookie的失效时间
5.知识内容个人梳理
6.今天都复习了之前的什么内容
退出登录时候 django执行了什么
- 清除session中存放的值
- Session使用
- session是加密的,比cookie安全
- session也可以叫会话保持,在建立在cookie之上的
- sessionid中存放了加密的字符串,用来辨别用户的身份
- django使用session
set_cookie执行了什么?
- 头文件中,设置setcookie
- 1、name 必需。规定cookie的名称。
- 2、value 必需。规定cookie的值。
- 3、expire 可选。规定cookie的有效时间
- 4、path 可选。
- 规定cookie的服务器路径,浏览器在发送cookie时只会发送对应路径及祖先路径的cookie,如cookieA设置在根下(path:/),cookieB设置在/dir/下,访问dir的请求会带着cookieB和cookieA,但访问根路径的请求只会带着cookieA
- 5、domain 可选。
- 规定cookie的域名。只能设置为当前域或当前域的上级域。例如,一个在a.b.com的页面,可以设置为a.b.com或.b.com 。如果设置为.b.com的话,那么在其它子域中也能访问到。
- 6.secure 可选。
- 规定是否通过安全的HTTPS连接来传输cookie。其值为0或1,如果值为1,则cookie只能在https连接上有效,默认值为0表示cookie在http和https连接上都有效
7、httponly 设置成true,
cookie仅通过http协议访问。意思就是cookie无法通过类似JavaScript这样的脚本语言访问。要有效的减少xss攻击时的身份窃取行为,可建议用此设置(虽然不是所有浏览器都支持),不过这个说法经常有争议,PHP5.2.0中添加。bool值true和false
优化一些django的登录细节
Django session的一些设置
-
为什么使用session
- -解决cookie不安全的问题,
- -存在服务器上的键值对 {'sdaf随机字符串':{name:lqz,pwd:123}} (返回给浏览器时,把随机字符串返还,这样就保证了信息的安全性)
- -用session必须跟cookie连用
-
配置session
-
settings文件中的一些配置
- 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过期(默认)
- SESSION_SAVE_EVERY_REQUEST = False
- 是否每次请求都保存Session,默认修改之后才保存(默认)
- SESSION_COOKIE_NAME = "sessionid"
-
session的增删改查
- 增 request.session[‘key’]=0,request.session.setdefault(‘key’,123)
- 删 del request.session[‘key’]
- 改 request.session[‘key’]=1
- 查 request.session.get(‘key’)
-
session所有键值对
- keys(),values(),items(),tierkeys(),itervalues(),iteritems()
-
清除session
- request.session.clear_expired() 清理小于当前日期的session
- request.session.exists(‘sessionid’) 判断是否存在
- request.session.delete(‘sessionid’)指定的session所有数据删除
- request.session.clear() 删除所有session
-
设置session的缓存
- 缓存引擎 SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
- SESSION_CACHE_ALIAS = 'default'
- 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
-
Djaogo Cookie的一些细节
-
django中cookie的使用方法
- response设置cookie
- set_cookie(key,value)
- request取cookie
- request.COOKIE.get(‘key’)
- response 删除Cookie
- response.delete_cookie(‘key’)
- cookie加盐(salt 需要用到解密)
- set_signed_cookie(‘name’,’lqz’,salt=’123’)
- max_age超时时间(秒)
- set_cookie(‘key’,’value’,max_age=6)
- response设置cookie
-
cookie的一些参数
- path=‘/’ 设置一个url ,只有访问这个url才携带cookie
- domain 设置一个域名,只有这个域名 cookie才有效
- secure=False 默认为假,True则是https传输
- httponly=True 只能https传输,JavaScript无法获取(不绝对)
- Max Age cookie的失效时间
6.今天都复习了之前的什么内容