django框架的基础知识点《柒》

在实际开发工作中,我们使用django开发之前,需要对django配置文件进行简单的设置:

1.sys.path     2. mysql数据库的配置     3.缓存的配置     4.session的配置       5. 日志       6.异常处理    

相关的命令:      创建数据库:create database  数据库名称 charset=utf8;

            创建用户:    create user yong  用户名 identified by 密码             

            授权:            grant  all on 数据库名称 to 用户名 @ ‘%’(%是指访问任意一台主机)

             刷新权限:    flush privileges

当在开发过程中,不可避免的要进行跨域访问,为了能解决跨域访问,可以安装第三方包:

1.pip install django-cors-headers
2. 在settings.py配置文件中安装应用:INSTALLED_APPS=【
                            ...,
                            
                          'corsheaders',

                          ...  
                          】
3.在中间件的第一项(必选在第一项)加上
        ‘corsheaders.middleware.CorsMiddleware’,
          ...
4.设置白名单:
        凡是出现在白名单中的域名,都可以访问后端接口
      # 配置cors的白名单: CORS_ORIGIN_WHITELIST=(WWW.***.site:8080)  
       CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否支持对cookie的操作
      # CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

5.设置当前网站的域名:
ALLOWED_HOSTS = [
'api.meiduo.site',
]
====================定义用户模型类
在django做贡献的认证系统基础上,进行开发
默认属性:用户名、密码、邮箱
1.class User(AbstractUser):
扩展自己的属性
2.配置,指定自己的类为认证类型
AUTH_USER_MODEL='应用.类型User'
====================短信验证码
1.判断是否已经发过,发过则抛异常
2.如果未发过,则随机生成
3.存入redis
验证码
发送标记
4.发送(云通讯)
5.响应
====================celery
当使用框架,没有进行进程、线程代码开发时,可以使用celery将一个函数在其它的线程中执行
任务task:一个耗时的函数===================>开发人员封装的函数,定义了耗时的代码
队列queue:存储任务的地方==================>redis,保存要执行的函数的名称
代理人broker:接收通知,将任务加入队列=====>调用者,任务函数.delay()
工人worker:从队列中读取任务,执行=========>新的进程
====================使用celery发短信
1.复制配置(复制)
2.自定义任务
创建包
创建tasks.py
定义函数
添加装饰器@app.task
在main.py中设置包,用于自动识别任务
3.调用
函数.delay(参数)
4.启动工人(启动celery服务)
celery -A celery_tasks.main worker -l info

在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用Session认证机制,而使用Json Web Token认证机制:

====================jwt
保持登录状态:
session
token
jwt的格式:
字符串1.字符串2.字符串3
header.payload.signature
header====>指明加密的方式{}=======>base64===>
payload===>数据库
signature=>有效性验证
====================在drf中使用jwt
1.

pip install djangorestframework-jwt


2.在配置文件settings.py中指定drf认证方式

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}

JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), }


3.生成token
payload=payload处理器(user)
token=encode处理器(payload)
user.token=token

猜你喜欢

转载自www.cnblogs.com/python58/p/9941291.html