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, 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用vant-ui+vue3实现一个可复用的评星组件

如图所示 有两种情况 一种是5颗星 一种是3颗星 官网上只提供了图标类型的 并没有加文字 https://femessage-vant.netlify.app/#/zh-CN/ 自己结合两种情况 在全局注册了此组件(后续还会持续更新代码~) <template><div class"vant_rate_wrapper"><van…

requestAnimationFrame请求动画帧

一、前言 在Web应用中&#xff0c;实现动画效果的方法比较多&#xff1a; CSS3&#xff1a;Transition&#xff08;过度&#xff09; / Animation&#xff08;动画&#xff09; HTML5&#xff1a;Canvas JavaScript&#xff1a;setInterval&#xff08;定时器&#xff09; /…

2010年认证杯SPSSPRO杯数学建模D题(第一阶段)服务网点的分布全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 D题 服务网点的分布 原题再现&#xff1a; 服务网点、通讯基站的设置&#xff0c;都存在如何设置较少的站点&#xff0c;获得较大效益的问题。通讯基站的覆盖范围一般是圆形的&#xff0c;而消防、快餐、快递服务则受到道路情况和到达时间的限…

答辩PPT制作太费时?AI工具帮你节省时间

在我原本的认知里面&#xff0c;答辩PPT是要包含论文各个章节的&#xff0c;在答辩时需要方方面面都讲到的&#xff0c;什么摘要、文献综述、实证分析、研究结果样样不落。但是&#xff0c;这大错特错&#xff01; 答辩PPT环节时长一般不超过5分钟&#xff0c;老师想要的答辩P…

2024美国虚拟信用卡申请流程

一、消费场景 二、如果申请 Fomepay美国虚拟信用卡 1.打开 Fomepay官方网站地址 2、登录之后根据自己的需求选择卡bin 3、点击申请卡&#xff0c;选择金额、填写姓名&#xff0c;选择微信/支付宝点击确认开卡即可 记得刷新页面哦~~~~~ 卡信息在卡中心cvc安全码里面 4、虚拟信…

DRF渲染之异常处理

异常处理 【1 】引言 Django REST Framework 这个就是我们常常说的DRF APIView的dispatch方法&#xff1a; 当请求到达视图时&#xff0c;DRF 的 APIView 类会调用 dispatch 方法来处理请求。在 dispatch 方法中&#xff0c;有一个关键的步骤是处理异常。如果在视图类的方法…

mikefile函数与实用模板

文章目录 0.概述1.函数调用语法2.字符串处理函数2.1 subst&#xff08;字符串替换函数&#xff09;2.2 patsubst&#xff08;模式字符串替换函数&#xff09;2.3 strip&#xff08;去空格函数&#xff09;2.4 findstring&#xff08;查找字符串函数&#xff09;2.5 filter&…

Aigtek:电压放大器的选型标准是什么

选型电压放大器时&#xff0c;需要考虑多个因素&#xff0c;以确保选择适合特定应用需求的设备。电压放大器该怎么选择&#xff0c;下面安泰电子来介绍电压放大器常见的选型标准。 增益要求&#xff1a;首先需要确定所需的增益水平。根据输入信号的幅度和输出信号的要求&#x…

只需3步,使用Stable Diffusion无限生成AI数字人视频(附安装包)

基本方法 搞一张照片&#xff0c;搞一段语音&#xff0c;合成照片和语音&#xff0c;同时让照片中的人物动起来&#xff0c;特别是头、眼睛和嘴。 语音合成 语音合成的方法很多&#xff0c;也比较成熟了&#xff0c;大家可以选择自己方便的&#xff0c;直接录音也可以&#…

【ZZULI数据结构实验】压缩与解码的钥匙:赫夫曼编码应用

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

大文件传输的好帮手Libarchive:功能强大的开源归档文件处理库

在数字化时代&#xff0c;文件的存储和传输对于企业的日常运作至关重要。但是&#xff0c;服务器中的压缩文件往往无法直接查看或预览&#xff0c;这给用户带来了不便。为了解决这一问题&#xff0c;在线解压功能的开发变得尤为重要。接下来&#xff0c;小编将介绍一个能够实现…

了解集合与数据结构(java)

什么是数据结构? 数据结构就是 数据结构, 功能就是描述和组织数据 比如我有10万个QQ号, 我来组织, 有很多种组织方法, 比如链表, 树, 堆, 栈等等. 假如QQ号要查找数据, 有种数据结构查找数据速度很快, 我们就用它 加入QQ号要进行删除数据, 有种数据结构删除速度很快, 我们…

Spring Cloud Alibaba 网关 Gateway 集成(7)

项目的源码地址 Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbo…

【Web】CTFSHOW 月饼杯 题解(全)

目录 web1_此夜圆 web2_故人心 web3_莫负婵娟 web1_此夜圆 拿到源码&#xff0c;一眼字符串逃逸 本地测一测&#xff0c;成功弹出计算器 <?phpclass a {public $uname;public $password;public function __wakeup(){system(calc);} }function filter($string){retur…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第5章 安装SSH

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

【深度学习Labelme】使用Segment Anything Model (SAM)快速打标,labelme多边形转yolo txt框看看对不对

文章目录 windows安装环境打开labelme自动保存勾选上&#xff0c;保存图片数据不要勾选选SAM精准模型&#xff0c;然后打开图片路径&#xff0c;然后点击创建AI多边形&#xff1a;鼠标点击确认物体控制点&#xff0c;确认完成后&#xff0c;双击鼠标完成选取&#xff0c;并给上…

Django 静态文件管理与部署指南

title: Django 静态文件管理与部署指南 date: 2024/5/10 17:38:36 updated: 2024/5/10 17:38:36 categories: 后端开发 tags: WebOptCDN加速DjangoCompressWebpackStaticDeployCICD-ToolsSecStatic 第一章&#xff1a;介绍 Django 静态文件的概念和重要性 在 Web 开发中&a…

解读计数器算法:原理、Java实现与优劣分析

计数器算法的介绍 计数器算法的基本原理是通过一个计数器来记录事件的发生次数。每当一个特定的事件发生时&#xff0c;计数器的值就会增加一。当需要检查这个事件发生的次数时&#xff0c;只需要查看计数器的当前值即可。这种方法简单直观&#xff0c;易于理解和实现。 想象…

Docker + Django跨域解决方案

什么是Django Django 是一个开源的高级 Python Web 框架&#xff0c;它鼓励快速开发并遵循可重用和可维护的实践。Django 是在 MTV&#xff08;模型-模板-视图&#xff09;模式的基础上设计的&#xff0c;这个模式类似于但不同于 MVC&#xff08;模型-视图-控制器&#xff09;模…

雷森托尔环保科技有限公司见证2024杭州数字供应链装备展潮流

参展企业介绍 青岛雷森托尔环保科技有限公司创建于2018年&#xff0c;位于山东青岛&#xff0c;现注册资本3000万。公司主营生产模压木托盘、化工木托盘、大型设备木包装、出口木托盘、酒柜木酒架等&#xff0c;公司拥有技术人员6人&#xff0c;均为包装设计专业毕业&#xff0…