Djangosettings.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 = ('*')