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.mzph.cn/pingmian/12367.shtml

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

相关文章

jenkis

文章目录 安装插件配置构建超时自动停止 安装插件 在线安装:安装jenkins后,初次启动的时候安装插件 在线安装:插件管理,可选插件中 离线安装:下载插件(.hpi格式) 使用该方法安装插件每次只能安装一个插件,…

基于RTL8710BN与天猫精灵的WIFI智能家居方案

0 项目简介 目的: 语音控制智能家居产品 基于阿里云的物联网产品 基于WiFi技术的嵌入式产品 主要技术: WiFi技术 常用的物联网协议 网络编程 云平台配置 MCU OPENSDK开发 阿里物联网操作系统 硬件: wifi开发板RTL8710BN 天猫精灵…

大数据可视化实验(五):Tableau数据可视化

目录 一、实验目的... 1 二、实验环境... 1 三、实验内容... 1 1)打开数据源... 1 2)进入工作簿... 2 3)字段设置... 2 4)数据筛选... 3 5)绘制条形图... 3 四、思考问题... 4 五、总结与心得体会... 4 一、…

5月14(信息差)

🌍字节携港大南大升级 LLaVA-NeXT:借 LLaMA-3 和 Qwen-1.5 脱胎换骨,轻松追平 GPT-4V Demo 链接:https://llava-next.lmms-lab.com/ 🎄阿里巴巴开源的15个顶级Java项目 ✨ 欧洲在线订餐服务Takeaway.com&#xff1a…

JavaScript中带日期的操作

当我们把日期转换为Number类型的时候,就会变成时间戳(毫秒) const future new Date(2037, 10, 19, 15, 23); console.log(Number(future)); // console.log(future); //与上行代码等效● 所以我们就可以利用时间戳去做点东西,例…

GPT-4o:融合文本、音频和图像的全方位人机交互体验

引言: GPT-4o(“o”代表“omni”)的问世标志着人机交互领域的一次重要突破。它不仅接受文本、音频和图像的任意组合作为输入,还能生成文本、音频和图像输出的任意组合。这一全新的模型不仅在响应速度上达到了惊人的水平&#xff0…

qt cmake加入程序exe图标

可以看到qt自动编译出来的图标是默认的,如下图所示 我想要更改成自定义的图标,比如下方的样子 下边是操作步骤: 图标选择与转化成ico 通过这个网站将正常图片转化成ico:https://www.bitbug.net/创建rc文件 将ico复制到cmakelis…

短视频拍摄+直播间搭建视觉艺术实战课:手把手场景演绎 从0-1短视频-8节课

抖音短视频和直播间你是否遇到这些问题? 短视频是用手机拍还是相机拍?画面怎么拍都没有质感 短视频产量低,拍的素材可用率低 看到别人用手机就能把短视频拍好自己却无从下手 明明已经打了好几盏灯了,但是画面还是比较暗 直播软件参数不会设置,电脑…

纯电动汽车的发展趋势简述

纯电车简介 纯电动汽车是使用电池驱动电动马达而不是传统的内燃机的汽车。它们通常使用电池组储存能量,然后通过电动马达转化为动力来驱动车辆。相比于传统的燃油车,纯电动汽车具有零排放、低噪音、低维护成本等优点,因此在环保和能源效率方…

数据新探:用Python挖掘互联网的隐藏宝藏

Hello,我是你们的阿佑,今天给大家上的菜是——数据存储!听起来枯燥无味?错了!阿佑将带你重新认识数据存储的艺术。就像为珍贵的艺术品寻找完美的展览馆,为你的数据选择合适的存储方式同样重要! …

版本控制:软件开发的基石(一文读懂版本控制)

未经允许,禁止转载! 在现代软件开发中,版本控制是不可或缺的工具。它帮助开发者跟踪和管理代码的变化,协作完成项目,并确保代码的完整性和安全性。本文将基于Git官网的视频“什么是版本控制”来深入探讨版本控制的基本…

Linux实验 vi编辑器的使用与磁盘管理

实验目的: 掌握vi编辑器的启动、保存和退出;掌握vi编辑器的三种工作模式的转换及输入模式下的操作;了解Linux文件系统类型、虚拟文件系统和存储设备的名称;掌握磁盘文件系统的挂载和卸载;掌握常用磁盘操作命令&#x…

C. Sort Zero

题目描述 思路分析: 记住他是要保证这个数列是不降的,也就是说如果某一个位置上的数变成了0,那么这个数前面的部分一定全都是0了,我们用map数组得到每一个数出现的最晚的位置,先从后向前遍历一遍,找出从哪开始出现了递减,然后标记下来结束即可,看看前面的每一个数都要用st标记是…

关于nvm管理node版本的一些问题

背景: 基于开发项目的迭代不能做到全部更新,有的项目是vue2.0 有的项目是vue3.0, 那么我们开发的时候就需要对node 进行更新,进而产生因为版本不同导致的错误:由此我们需要一款管理 切换node版本的东西,那就…

C语言 8 函数递归

目录 1. 递归是什么? 2.递归的限制条件 3. 递归举例1 4. 递归举例2 5.迭代 6. 递归举例3 拓展学习: 1. 递归是什么? 递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢? 递归其实是⼀种解决问题的⽅法&#xff0c…

0508GoodsContent的Maven项目

0508GoodsContent的Maven项目包-CSDN博客 数据库字段 页面需求

ssl证书申请配置要怎么弄?

SSL证书是一种公钥证书,用于保护网站的数据传输过程,确保网站数据的安全性。在网站上使用SSL证书可以有效地防止黑客攻击、窃取用户信息等安全问题。下面将详细介绍SSL证书的申请和配置。 一、SSL证书的申请 1. 选择证书品牌和类型 目前市场上有很多S…

手撸XXL-JOB(四)——远程调用定时任务

Java Socket网络编程 网络编程是Java编程中的重要组成部分,包括服务端和客户端两部分内容。Socket是Java网络编程的基本组件之一,用于在应用程序之间提供双向通信,Socket提供了一种标准的接口,允许应用程序通过网络发送和接收数据…

【递归、回溯和剪枝】综合训练<二>

1.组合总和 组合总和 解法一&#xff1a; class Solution { public:vector<vector<int>> ret;vector<int> path;int aim;vector<vector<int>> combinationSum(vector<int>& nums, int target) {aim target;dfs(nums, 0, 0);return …

BOM部分

一&#xff0c;概述 二&#xff0c;Windows对象常见的事件 1.窗口加载事件 上面那个是会等页面都加载完了&#xff0c;在进行函数的调用或者触发事件&#xff0c;如&#xff08;图像&#xff0c;文本&#xff0c;css&#xff0c;js等&#xff09;&#xff0c;所以那个声明可以…