您的位置:首页 > 数据库 > SQL

Django `settings.py`配置详解。配置djangorestframework实例(连接mysql数据库、配置跨域、配置JWT验证)。

2019-01-31 11:50 946 查看

Django
settings.py
配置详解。djangorestframework配置。

1、测试模式及允许访问的地址

DEBUG = True               #开启debug模式,仅用于开发阶段。
ALLOWED_HOSTS = ['*']      #代表所有地址都可以访问,也可以指定地址访问。

INSTALLED_APPS已安装的模块,如果想添加其他包,可按相同模式添加,我这边要使用djangorestframework包(如果不用,就不要添加),用于做纯后端。

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'DRF_JIJIAN_APP.apps.DrfJijianAppConfig',
'rest_frameword',     #这是我自行添加的django-rest-framework包,注意不要忘记英文逗号
'corsheaders',        #这是我自行添加的django-cors-headers包,注意不要忘记英文逗号
]

中间件,request从上往下,依次处理。response由下往上依次返回。

MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', #跨域中间件
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Django使用mysqlclient连接mysql数据库,

settings.py
配置。所以需要先安装mysqlclient引擎,安装完成后再这里配置。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'drf_jijian_app',   #数据库名
'USER': 'root',             #用户名
'PASSWORD': '123',          #密码
'HOST': 'localhost',        #数据库地址
'PORT': '3306'              #数据库端口
}
}

Django使用简体中文、上海时间,

settings.py
配置。

LANGUAGE_CODE = 'zh-Hans'    #简体中文

TIME_ZONE = 'Asia/Shanghai'  #上海时间

先在INSTALLED_APPS中添加djangorestframework_simplejwt。这里具体配置

# 引入simplejwt验证模块,用于JWT验证
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
#官网上这么配置,用于permissions权限,结果总是报错,一怒之下注释掉了,结果正常了,permissions也可以用。
# 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
#引入simplejwt验证模块,用于JWT验证
'rest_framework_simplejwt.authentication.JWTAuthentication',
)
}

SIMPLE_JWT自定义配置,如果使用默认的话,可以不配置。

#simplejwt验证,自定义设置
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(days=7),    # access_token的持续时间
'REFRESH_TOKEN_LIFETIME': timedelta(days=7),   # refresh_token的持续时间
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': True,

'ALGORITHM': 'HS256',
'SIGNING_KEY': settings.SECRET_KEY,
'VERIFYING_KEY': None,

'AUTH_HEADER_TYPES': ('Bearer',),
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',

'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
'TOKEN_TYPE_CLAIM': 'token_type',

'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
'SLIDING_TOKEN_LIFETIME': timedelta(days=7),            # sliping_token的持续时间
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=7),
}

先在INSTALLED_APPS中添加django-cors-headers。这里配置允许跨域

# 利用django-cors-headers,配置允许跨域,测试阶段配置
CORS_ALLOW_CREDENTIALS = True

# 允许所有人跨域访问
CORS_ORIGIN_ALLOW_ALL = True

# 允许所有的跨域请求头
CORS_ALLOW_HEADERS = ('*')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐