DRF 纯净版创建使用

news2024/11/22 17:51:17

【一】介绍

(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, include
      
      urlpatterns = [
          # path("admin/", admin.site.urls),
          path("api/v1/", include('api.urls')),
      ]
      
      
  • app分发路由:api/urls.py

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

(2)视图

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

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

(3)测试结果

image-20240510121533912

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线下线上陪玩APP小程序H5搭建设计-源码交付,支持二开!

一、电竞陪玩系统APP的概念 电竞陪玩系统APP是一种专门为电子竞技玩家提供服务的平台。通过这个平台,玩家可以找到专业的电竞陪玩者,他们可以帮助玩家提升游戏技能,提供游戏策略建议,甚至陪伴玩家一起进行游戏。这种服务不仅可以提…

阿里云部署ChatGLM-6B及ptuning微调教程

一、模型部署 1.进入阿里云人工智能平台PAI。 2.申请免费试用。 3.打开交互式建模 PAI-DSW。 4.新建实例。 5.填写配置。 6.实例准备完成后点击打开。 7.打开实例后点击Teminal。 8.在Teminal中依次输入以下命令并执行。 apt-get update apt-get install git-lfs git lfs ins…

某票星球网图标点选验证码YOLOV8识别案例

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 图标点选验证码大家都不陌生了,我们来看下数据集 引言与个人想法 先说结论,本文采用的方法能够达到99的准确率,效果图如下 做图标点选其实方法有很多,有的…

活字格中如何打开指定文件夹

如何使用活字格打开指定文件夹 活字格是一款功能强大的电子表格软件,除了基本的表格计算功能之外,还提供了丰富的扩展功能,可以用来实现各种自动化操作。例如,我们可以使用活字格来打开指定的文件夹。 以下是具体的操作步骤&…

完整性验证器:迈向 Starknet 超高可扩展性的一大步

原文:https://www.starknet.io/en/content/the-integrity-verifier-a-leap-toward-starknet-hyperscaling;https://www.starknet.io/en/ecosystem/grant 编译:TinTinLand 核心观点 由 Herodotus 开发的完整性验证器,使开发者能够…

字节跳动后端青训营笔记:Go语言进阶

1.语言进阶&依赖管理 1.1 语言进阶 从并发编程的视角了解Go高性能的本质。 1.1.1 并发&并行 在单核CPU下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,它将CPU的时间片(window下最小约为15毫秒)分给不同的程序使用&#xff0…

Spring-依赖查找

依赖查找 根据名称进行查找 实时查找 BeanFactory beanFactory new ClassPathXmlApplicationContext("beans.xml"); Object bean beanFactory.getBean("personHolder"); System.out.println(bean);xml如下: <bean id"person" class&qu…

数据结构与算法===递归

文章目录 定义适用场景爬楼梯代码实现 小结 定义 递归(Recursion)是指函数的自身调用。 这个算法演变为了程序员之间的梗&#xff0c;所表达的意思近似于“套娃”&#xff0c;表示不断重复引用别人的话从而产生循环。 适用场景 这个应该很多的&#xff0c;像一些树的遍历&am…

谷歌最强AI——Gemini免费使用2个月教程,性能抗衡GPT4

谷歌最强AI——Gemini采用的是Ultra 1.0大模型&#xff0c;功能非常强大&#xff0c;媲美GPT-4&#xff01;谷歌用户只需要绑定虚拟卡&#xff0c;就可以免费使用2个月&#xff01; 谷歌昨夜官宣四项AI新进展&#xff01; 1、最大、功能最强的大模型版本Gemini Ultra 1.0全面…

【Arduino】ESP32/ESP8266 JSON格式解析

目录 1、JSON 2、JSON语法格式 基本概念&#xff1a; 语法规则&#xff1a; 数据类型&#xff1a; 示例&#xff1a; 3、JSON解析 单一对象JSON解析&#xff08;无嵌套&#xff09; JSON数组解析 使用ArduinoJson官网在线工具解析JSON信息 ESP8266闪存存储的JSON解析…

数据分析中大数据和云计算

大数据和云计算 前言一、大数据二、大数据定义三、数据存储单位四、大数据存储技术五、大数据应用技术六、大数据特征七、数据容量八、数据类型的多样性结构化数据半结构化数据非结构化数据 九、获取数据的速度十、可变性十一、真实性十二、复杂性十三、价值十四、云计算十五、…

模型推导:BG/NBD(预测用户生命周期(CLV)模型)

CLV&#xff08;Customer Lifetime Value&#xff09;指的是客户生命周期价值&#xff0c;用以衡量客户在一段时间内对企业有多大的价值。企业对每个用户的流失与否、在未来时间是否会再次购买&#xff0c;还会再购买多少次才会流失等问题感兴趣&#xff0c;本文中的BG/NBD模型…

【intro】Graph Isomorphism Network(GIN)

论文 https://arxiv.org/pdf/1810.00826 abstract 图神经网络(gnn)是一种有效的图表示学习框架。gnn采用邻域聚合方案&#xff0c;通过递归聚合和变换相邻节点的表示向量来计算节点的表示向量。已经提出了许多GNN变体&#xff0c;并在节点和图分类任务上取得了最先进的结果。…

C++实现一个简单的控制cpu利用率的程序

写一个程序&#xff0c;让控制cpu利用率在20%左右 思路很简单&#xff1a;每个循环控制sleep的时间占比 #include <iostream> #include <chrono> #include <unistd.h>int main() {int ratio 20;int base_time 1000;int sleeptime base_time * (100-ratio…

程序员必读书单(CSDN专享)

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 今天是一篇分享资源的汇总&#xff0c;近半年来我总计分享了 202 本&#xff08;将近 10G &#xff09;的计算机领域著作…

web前端之纯CSS实现简单酷炫的照片墙效果、排除元素的伪类、scale

MENU 效果htmlstylescale:not() 效果 html <div class"container"><div class"box"><img src"../../image/1_.jpg"></div><div class"box"><img src"../../image/2_.jpg"></div>…

欢乐钓鱼大师攻略,怎么获取道具?

在《欢乐钓鱼大师》的游戏世界中&#xff0c;道具是提升钓鱼体验、解锁新功能以及完成挑战的关键。通过多种方式获取道具&#xff0c;能够帮助玩家更好地探索游戏世界、挑战自我&#xff0c;以及与其他玩家展开竞争。以下是关于如何获取道具的详细攻略&#xff0c;让你能够在游…

嵌入式全栈开发学习笔记---C语言笔试复习大全16

目录 指针和数组 用指针来表示数组 用数组来表示指针 笔试题19 上一篇复习了指针使用时的相关注意事项&#xff0c;这一篇我们开始复习指针和数组。 说明&#xff1a;我们学过单片机的一般都是有C语言基础的了&#xff0c;网上关于C语言的资料有很多&#xff0c;大家如果对…

问题与解决:大华视频后台播放报错

大华播放器接到BI系统后&#xff0c;实时监控视频后台播放一段时间后&#xff0c;报错如下&#xff1a; The play() request was interrupted because video-only background media was paused to save power. 在谷歌浏览器下&#xff0c;直接用代码运行系统&#xff0c;视频在…

XP316,XP351中控DCS模块

XP316,XP351中控DCS模块。在设计分布式系统时&#xff0c;需要考虑以下原则可靠性&#xff1a;系统应该能够在节点故障的情况下继续工作&#xff0c;同时保证数据的一致性和可靠性。XP316,XP351中控DCS模块&#xff08;2&#xff09;可扩展性&#xff1a;保证用户的响应时间。安…