django rest api

一个django的settings文件不需要我们手动去设置所有项目,因为系统已经默认设置好了。我们只需要修改我们使用的设定就好了。

调整目录后,需要把apps加入到环境变量,以下是我的项目设置的settings.py配置文件

 import os, sys, time from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent # 1.把apps路径加入环境变量 sys.path.insert(2, os.path.join(Path(__file__).resolve().parent)) sys.path.insert(3, os.path.join(Path(__file__).resolve().parent, 'apps')) # print(sys.path) # Quick-start development settings - unsuitable for production # See ***/en/4.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-)8l%3#p%xe8t+q3+lcq6sknhi0hpb%9=a)g4f6sb7dxps7qw-f' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition # 2.注册app INSTALLED_APPS = [ 'simpleui', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'book.apps.BookConfig', 'rest_framework', 'django_filters', 'corsheaders', ] # 3.中间件 MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'corsheaders.middleware.CorsPostCsrfMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCOnF= 'drf_book.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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', ], }, }, ] WSGI_APPLICATION = 'drf_book.wsgi.application' # 4.数据库配置 # ***/en/4.0/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # Password validation # ***/en/4.0/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ {'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, {'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, {'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, {'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # ***/en/4.0/topics/i18n/ # 5.配置语言和时区 LANGUAGE_CODE = 'zh-hans' TIME_ZOnE= 'Asia/Shanghai' USE_I18N = True USE_TZ = False # Static files (CSS, Javascript, Images) # ***/en/4.0/howto/static-files/ STATIC_URL = 'static/' # Default primary key field type # ***/en/4.0/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' # 6.日志的配置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' }, 'simple': { 'format': '%(levelname)s %(module)s %(lineno)d %(message)s' }, }, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'simple' }, 'file': { 'level': 'INFO', # 实际开发建议使用ERROR 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(os.path.dirname(BASE_DIR), "logs", "logs.log"), # 日志保存位置 'maxBytes': 100 * 1024 * 1024, # 日志文件的最大值,这里我们设置300M 'backupCount': 100, # 日志文件的数量,设置最大日志数量为10 'formatter': 'verbose', # 日志格式:详细格式 'encoding': 'utf-8', # 文件内容编码 }, }, 'loggers': { # 日志对象 'django': { 'handlers': ['console', 'file'], 'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统 }, } } # 7.跨域的配置 CORS_ORIGIN_ALLOW_ALL = False CORS_ORIGIN_WHITELIST = ( # 授权跨站点***:8888", ) CSRF_TRUSTED_ORIGINS = [ "127.0.0.1", "***", # 发起请求的地址,不需要添加***' EMAIL_PORT = 25 EMAIL_USE_TLS = True EMAIL_HOST_USER = '243662875@qq.com' # 帐号 EMAIL_HOST_PASSWORD = 'svvznofprpbc' # 密码 # 9.DRF设置 REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'devops.utils.exceptions.common_exception_handler', # 自定义异常处理 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', # 分页 'PAGE_SIZE': 10, }

以下设置控制基本API策略,并应用于每个基于APIView类的视图或基于@api_view函数的视图。

参考:https://q1mi.github.io/Django-REST-framework-documentation/api-guide/settings/

 #1.访问项目中RESTframework的API设置值 #api_settings对象将检查用户定义的设置,否则将回退到默认值。任何使用字符串导入路径引用类的设置都会自动导入并返回被引用的类,而不是字符串文字。 from rest_framework.settings import api_settings print(api_settings.DEFAULT_AUTHENTICATION_CLASSES) #2.API参考 REST_FRAMEWORK = { #1.渲染器类的列表或元组,用于确定返回Response对象时可能使用的默认渲染器集。 "DEFAULT_RENDERER_CLASSES": ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ), #2.解析器类的列表或元组,用于确定访问request.data属性时使用的默认解析器集 "DEFAULT_PARSER_CLASSES": ( 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser' ), #3.身份验证类的列表或元组,用于确定在访问request.user或request.auth属性时使用的默认身份验证集。 "DEFAULT_AUTHENTICATION_CLASSES": ( 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication' ), #4.权限类的列表或元组,用于确定在视图开始时检查的默认权限集。权限必须由列表中的每个类授予。 "DEFAULT_PERMISSION_CLASSES": ( 'rest_framework.permissions.AllowAny', ), #5.限流类的列表或元组,用于确定在视图开始时检查的默认限流类集。 "DEFAULT_THROTTLE_CLASSES": ( 'rest_framework.throttling.AnonRateThrottle', 'rest_framework.throttling.UserRateThrottle', ), "DEFAULT_THROTTLE_RATES": { 'anon': '100/day', #未登录的用户所有接口1天访问100次 'user': '1000/day' #已登录的用户所有接口1天访问1000次 }, #6.用于通用过滤的过滤器后端类列表。 'DEFAULT_FILTER_BACKENDS': ( 'django_filters.rest_framework.DjangoFilterBackend', # 过滤 'rest_framework.filters.OrderingFilter' # 排序 ), #7.用于分页的默认页面大小。 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10, #8.配置自定义的异常处理 'EXCEPTION_HANDLER': 'demo.utils.exceptions.common_exception_handler', }

本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023-06-20 11:24
下一篇 2023-06-20 11:47

相关推荐

  • 仙剑奇侠传1游戏有哪些隐藏剧情

    《仙剑奇侠传1》是早年RPG游戏的代表作,也是从这款游戏开始,将翻箱倒柜寻找物品的玩法发挥到极致的。无论是在垃圾桶、路边、街道、草地、民居….甚至还有很多脑洞大开的地方…

    2023-03-28
  • 微信朋友圈怎么发纯文字,微信朋友圈怎么发文字

    微信如何发一个高大上的朋友圈,你只需要这么做一下 让你的微信朋友圈像QQ空间一样拥有小尾巴 成为朋友圈最“靓”的崽 (备):此类软件易被apple官方下架,喜欢装**的宝贝尽快咯 …

    2022-12-22
  • 2023年集五福怎么玩(20年五福第一天有多少人集齐)

    转眼又到新春倒计时之际,兔年春节正日渐临近。2023年支付宝的集五福活动,作为春节必备的「传统节目」,已于1月10日正式开启,开奖时间依然为大年夜22点18分,可拼手气分 5 亿现…

    2023-07-04
  • 腾讯王卡有哪些软件可以免流量

    [小斌聊科技]互联网套餐中,腾讯王卡的热度冠绝群雄,支持的免流应用也相当多。除了腾讯旗下的应用、游戏之外,还支持斗鱼直播、熊猫直播、快手、蘑菇街等第三方应用免流,最近更是新增了知乎…

    2023-04-30
  • 如何修复u盘损坏的文件(如何修复u盘)

    U盘损坏怎么恢复?U盘提示格式化怎么办?当U盘出现这种情况时,很多人都不知道该怎么办,因为U盘里面保存着重要的数据,不敢轻易的格式化,那么遇到这样的问题我们该如何解决呢?小编在这里…

    2023-06-04
  • 接到骚扰电话怎么反击

    不想接到骚扰电话、骗子电话?搞定只需一招简单还免费! 记者从工信部获悉,“骚扰电话拒接”服务自2019年上线以来,截至2023年6月,服务用户规模超5.4亿,累计依据用户意愿提供骚…

    2023-08-25
  • 三星手机修一下大概多少钱?(三星手机如何更换零件)

    随着智能手机售价越来越高,售后成本也在不断提升,部分高端机屏幕、后盖维修价格就占到1/3左右,如果损坏严重甚至都不如买一台新手机划算。为了改变这种情况,三星近日推出全新的售后政策,…

    2023-08-01
  • 安卓手机浏览器哪款更好用

    不请自来,向大家推荐一款新鲜出炉的安卓手机浏览器:秘迹搜app 目前刚好只上了安卓版,可以通过酷安网搜索:秘迹搜 下载。 化繁为简,专注搜索 —— 秘迹搜 V0.1.0 真的是超新…

    2023-03-19
  • oppo手机怎样才能省电用得更长久

    续航一直是消费者最关心、最头疼的手机疑难杂症,特别是那种玩游戏玩到一半没电自动关机了,整个人都要抓狂了有没有!而OPPO R11作为2017最畅销的机型之一,身边用它的人也越来越多…

    2023-04-18
  • 华为手机分屏怎么使用,华为手机分屏的时候怎么横过来

    华为手机分屏怎么弄?华为手机分屏怎么设置?华为手机分屏怎么开启?为什么我在手机里找了无数遍还是没发现华为手机分屏功能呢?不知道各位小伙伴在使用华为手机时候有没有碰到过以上问题,今天…

    2023-05-20