DRF 纯净版创建使用

【一】介绍

(1)使用原因

  • 在Django中,contrib 包包含了许多内置的app和中间件,如authsessionsadmin等,这些app在创建新的Django项目时默认是包含在内的。
  • 然而,在开发RESTful API时,可能不需要使用所有这些内置app,尤其是当打算使用自定义的用户模型或不需要Django的会话管理时。在这种情况下,可以创建一个更加“纯净”的Django环境,只包含真正需要的部分。

(2)注意事项

  • 版本兼容性:在使用Django和DRF时,需要注意不同版本之间的兼容性。一些新的功能和修复可能只在特定版本的框架中可用。
  • 安全性:虽然Django和DRF都内置了多种安全特性,但开发者仍然需要关注安全问题,如输入验证、权限控制等。同时,也需要及时关注安全漏洞和修复。
  • 性能优化:Django和DRF的性能优化可能需要一些额外的配置和调试。开发者需要根据项目的实际需求进行性能优化,以确保应用的稳定性和响应速度。

【二】创建一个Django项目

(1)创建一个新虚拟环境的项目

  1. 选择File,然后点击New Project
  2. 选择Pure Python
  3. 起一个项目名,选择使用新的虚拟环境,虚拟环境的位置放在新项目的根目录下
  4. 选择一个解释器,点击创建即可

image-20240510102449127

(2)安装django和drf

  1. 使用terminal安装django,这里指定版本是4.2.2的版本

    • pip install django==4.2.2
      
  2. 使用terminal安装drf,这里使用的是默认安装,装的是最新的版本

    • pip install djangorestframework
      
  3. 继续使用terminal创建项目,项目名也叫做文件名,位置在当前项目的位置

    • django-admin startproject clean_drf .
      
  4. 最后再创建一个app用于测试,名字叫做api

    • django-admin startapp api
      
  • 如果创建成功,但是pycharm不显示的话刷新项目文件

image-20240510105922849

【三】修改配置文件改为纯净版

(1)app保留和删除

  • 肯定要保留的app有
    1. rest_framework
      • drf实际上是一个app,所以需要保留
    2. api
      • 其他app,这里就一个测试api
  • 可保留的app
    1. django.contrib.contenttypes
      • DRF的视图集和反向关系功能,如果不需要可以移除它
    2. django.contrib.staticfiles
      • 静态文件管理相关,在纯API项目中是不需要的
      • 但是浏览器的测试就会显示的很丑了,缺失静态资源
      • image-20240510115849025

image-20240510115957499

(2)中间件保留和删除

  • 建议保留
    1. django.middleware.common.CommonMiddleware
      • HTTP特性,如“Forbidden”响应和“Vary”响应头等
    2. django.middleware.csrf.CsrfViewMiddleware
      • 如果API需要处理POST、PUT、PATCH等请求,并且希望保护这些请求免受CSRF攻击,那么需要保留

image-20240510120631772

  • 其他中间件说明
    1. django.middleware.security.SecurityMiddleware
      • 这个中间件添加了一些安全相关的HTTP头。
    2. django.contrib.auth.middleware.AuthenticationMiddleware
      • 这个中间件处理用户认证。在纯API项目中,更倾向于使用DRF的认证机制,自定义认证方法。
    3. django.middleware.clickjacking.XFrameOptionsMiddleware
      • 这个中间件提供点击劫持保护。

(3)其他修改

  • TEMPLATES注释掉不需要的内容

    • image-20240510120753857
  • 重点:添加匿名用户信息到配置文件

    • REST_FRAMEWORK = {"UNAUTHENTICATED_USER": None,
      }
      

【四】测试

(0)pycharm配置

  • pycharm设置中配置
    1. 点击File,再点击settings
    2. 搜索django,选择最下面的django选项
    3. 填写信息
      • django project root:项目根目录
      • Settings:配置文件
      • 最后点击应用和ok

image-20240510121839002

  • 启动配置:很简单,跟着点就可以

image-20240510122409911

(1)路由

  • 总路由:urls.py

    • from django.contrib import admin
      from django.urls import path, includeurlpatterns = [# path("admin/", admin.site.urls),path("api/v1/", include('api.urls')),
      ]
  • app分发路由:api/urls.py

    • from django.urls import path
      from .views import TestViewurlpatterns = [path('test/', TestView.as_view(), name='test')
      ]
      

(2)视图

  • 视图测试函数:api/views.py

    • from rest_framework.views import APIView
      from rest_framework.response import Responseclass TestView(APIView):def get(self, request):return Response('测试成功')

(3)测试结果

image-20240510121533912

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/327124.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux性能监控之lsof

lsof:list open files,显示所有打开的文件以及进程信息,我们通常用来检查特定的文件被哪些进程打开 [rootk8s-master ~]# lsof --help lsof: illegal option character: - lsof: -e not followed by a file system path: "lp" lso…

网络传输,请每次都开启 TCP_NODELAY

原文:Marc Brooker - 2024.05.09 (注:不必过于担心这个问题,大部分现代库,语言(如 Go),代理(如 Envoy),都默认设置了 TCP_NODELAY。如果遇到网络…

光耦 IS314W中文资料 IS314W引脚图及功能说明

IS314W是一款IGBT/MOSFET输出型光耦,由Isocom公司制造。它主要用于驱动用于电机控制和电源系统变频器的功率IGBT和MOSFET。以下是该产品的部分功能和参数: - 两个独立的光耦输出通道 - 轨对轨输出电压 - 最大峰值输出电流:1.0A - 最小峰值输…

DDoS攻击揭秘与网站防护策略

DDoS攻击(分布式拒绝服务攻击)是一种利用大量被控制的计算机或智能设备(如僵尸网络)对目标网站或服务器发起大量无效请求或数据流量,从而导致目标系统资源耗尽、服务崩溃或无法处理正常请求的攻击方式。这种攻击通常是…

【cpp】并发多线程 Unique

1. unique_lock 何时锁定资源。 unique_lock lock1 时候&#xff0c;还没有锁住资源。 实际是后面&#xff0c;显式的出发&#xff1a; 比如&#xff0c; lock.lock, 或 std::lock(lk1,lk2), 或者条件变量CV.wait(mtx, []{!re})。 #include <iostream> #include <mu…

《大数据分析-数据仓库项目实战》学习笔记

目录 基本概念 数据仓库 数据仓库整体技术架构 数据仓库主题 数据集市 数据仓库的血缘关系 数据仓库元数据管理 数据仓库的指标 数据仓库维度概念 HDFS Flume Hadoop Kafka 数据仓库分层模型 Superset 即席查询 Sqoop Atlas元数据管理 项目需求描述 系统目标…

python 对矩阵与矩阵之间对应位置的元素,做softmax操作,代码实战

1.对矩阵中对应位置的元素&#xff0c;做softmax 对于一个向量&#xff0c;softmax函数会对其中每一个元素进行指数运算&#xff0c;然后除以所有元素指数和的结果。当将其应用到多个矩阵的相应位置上时&#xff0c;我们实际上是在对每个位置的一组数&#xff08;从各个矩阵的同…

pyqt学习过程中的问题

1&#xff0c; 2. 3.传递参数&#xff1a; 第二个函数缺少参数self, 第三种方法&#xff1a;可以使用 lambda 表达式 # 连接按钮的点击信号到槽函数&#xff0c;传递一个参数 self.button.clicked.connect(lambda: self.onButtonClicked(10))def onButtonClicked(self, value)…

基于ChatGPT 和 OpenAI 模型的现代生成式 AI

书籍&#xff1a;Modern Generative AI with ChatGPT and OpenAI Models: Leverage the capabilities of OpenAIs LLM for productivity and innovation with GPT3 and GPT4 作者&#xff1a;Valentina Alto 出版&#xff1a;Packt Publishing 书籍下载-《基于ChatGPT 和 Op…

Taro 快速开始

大家好我是苏麟 , 今天聊聊Trao. 官网 : Taro 介绍 | Taro 文档 (jd.com) 点击快速开始 全局安装 CLI 初始化一个项目 选择配置 : 根据自己需求选择 安装失败先不用管 , 用前端工具打开项目 npm install 安装 , 显示安装失败 怎么解决 ? : 查看报错信息 百度 , 问 AI 工具 运…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

前端无样式id或者class等来定位标签

目录&#xff1a; 1、使用背景2、代码处理 1、使用背景 客户使用我们产品组件&#xff0c;发现替换文件&#xff0c;每次替换都会新增如下的样式&#xff0c;造就样式错乱&#xff0c;是组件的文件&#xff0c;目前临时处理的话就是替换文件时删除新增的样式&#xff0c;但是发…

【C++11】std::async函数介绍及问题梳理

目录 &#x1f31e;1. std::async 简介 &#x1f31e;2. 问题梳理 &#x1f30a;2.1 std::async 到 future get 直接调用会如何抛异常 &#x1f30a;2.2 std::async 如果通过劫持让 new 内存不够&#xff0c;有没有可能抛异常 &#x1f30a;2.3 std::async 如果系统线程不…

电商平台接口自动化框架实践||电商API数据采集接口

电商数据采集接口 语言&#xff1a;python 接口自动化实现流程 红色为可实现/尚未完成 绿色为需要人工干预部分 自动生成测试用例模板&#xff08;俩种方式二选一&#xff09;&#xff1a; mimproxy&#xff0c;通过浏览器代理抓包方式&#xff0c;访问 H5 或者 web 页面&a…

万物生长大会 | 创邻科技再登杭州准独角兽榜单

近日&#xff0c;由民建中央、中国科协指导&#xff0c;民建浙江省委会、中国投资发展促进会联合办的第八届万物生长大会在杭州举办。 在这场创新创业领域一年一度的盛会上&#xff0c;杭州市创业投资协会联合微链共同发布《2024杭州独角兽&准独角兽企业榜单》。榜单显示&…

【强化学习-Mode-Free DRL】深度强化学习如何选择合适的算法?DQN、DDPG、A3C等经典算法Mode-Free DRL算法的四个核心改进方向

【强化学习-DRL】深度强化学习如何选择合适的算法&#xff1f; 引言&#xff1a;本文第一节先对DRL的脉络进行简要介绍&#xff0c;引出Mode-Free DRL。第二节对Mode-Free DRL的两种分类进行简要介绍&#xff0c;并对三种经典的DQL算法给出其交叉分类情况&#xff1b;第三节对…

Tomcat的实现

在一台电脑上启动tomcat&#xff0c;tomcat是server&#xff0c;即服务器。服务器只会被实例化一次&#xff0c;tomcat这只猫就是服务器。服务器下包含多个子节点服务&#xff0c;即service&#xff0c;顾名思义就是对外提供服务。服务器通常只有一个服务&#xff0c;默认是卡特…

申请免费的域名证书

免费域名证书主要是由一些证书颁发机构&#xff08;CA&#xff09;提供的&#xff0c;用于为网站启用HTTPS加密的数字证书&#xff0c;目的是保障网站数据传输的安全性。这些证书的特点和获取途径如下&#xff1a; 功能与目的&#xff1a;免费域名证书能够帮助网站实现基本的加…

Edge浏览器自动翻译功能按钮不见了

前言&#xff1a; 平时偶尔会用到Edge的页面翻译功能&#xff0c;使用挺方便。突然发现Edge浏览器的翻译功能不见 了。如下图所示&#xff1a; 解决思路&#xff1a; 1、从网上找各种解决方案也没有解决&#xff0c;其中有一个说到点右上角的三个点 2、点击设置…

有哪些值得买的开放式耳机推荐?2024年开放式运动耳机选购指南

开放式耳机因其独特设计&#xff0c;能在一定程度上保护听力。相较于传统封闭式耳机&#xff0c;开放式设计允许周围环境声音自然流入耳内&#xff0c;降低了耳内共振和声压&#xff0c;减少了耳道的不适感&#xff0c;从而减轻了对听力的潜在损害。对于追求音质与听力保护并重…