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

2022-08-21 12:47:11

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 = ('*')
  • 作者:老道忘了
  • 原文链接:https://blog.csdn.net/weixin_39459768/article/details/86705508
    更新时间:2022-08-21 12:47:11