Django REST Framework(十五)路由Routes

news2024/11/15 16:50:24

如何在Django REST framework中利用SimpleRouterDefaultRouter来高效生成视图集的路由信息,并详细解释如何使用action装饰器为视图集中的自定义方法生成路由

1.路由的定义规则

        路由称为URL(Uniform Resource Locator,统一资源定位符),也可以称为URLconf,是对可以从互联网上得到的资源位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的路由,用于指出网站文件的路径位置。简单地说,路由可视为我们常说的网址,每个网址代表不同的网页。

        我们知道完整的路由包含:路由地址、视图函数(或者视图类)、可选变量和路由命名。其中基本的信息必须有:路由地址和视图函数(或者视图类),路由地址即我们常说的网址,视图函数(或者视图类)即App的views.py文件所定义的函数或类。

        在App(index文件夹)里添加urls.py是将所有属于App的路由都写入该文件中,这样更容易管理和区分每个App的路由地址,而MyProject文件夹的urls.py是将每个App的urls.py统一管理。这种路由设计模式是Django常用的,其工作原理如下:

        (1) 运 行 MyProject项 目 时 , Django 从 MyProject文 件 夹 的urls.py找到各个App所定义的路由信息,生成完整的路由列表。
        (2)当用户在浏览器上访问某个路由地址时,Django就会收到该用户的请求信息。
        (3)Django从当前请求信息获取路由地址,并在路由列表里匹配相应的路由信息,再执行路由信息所指向的视图函数(或视图类),从而完成整个请求响应过程

        MyProject文件夹的urls.py定义两条路由信息,分别是Admin站点管理和首页地址(index)。其中,Admin站点管理在创建项目时已自动生成,一般情况下无须更改;首页地址是指index文件夹的urls.py。MyProject文件夹的urls.py的代码解释如下:
●from django.contrib import admin:导入内置Admin功能模块。
●from django.urls import path,include:导入Django的路由函数模块。
●urlpatterns:代表整个项目的路由集合,以列表格式表示,每个元素代表一条路由信息。

●path('admin/', admin.site.urls) : 设 定 Admin 的 路 由 信息。'admin/'代表127.0.0.1:8000/admin的路由地址,admin后面的斜杠是路径分隔符,其作用等同于计算机中文件目录的斜杠符号;
admin.site.urls指向内置Admin功能所自定义的路由信息,可以在Python 目 录 Lib\site-packages\django\contrib\admin\sites.py 找到具体定义过程。
● path('',include('index.urls')) : 路 由 地 址 为 “\” , 即127.0.0.1:8000,通常是网站的首页;路由函数include是将该路由信息分发给index的urls.py处理。

由于首页地址分发给index的urls.py处理,因此下一步需要对index的urls.py编写路由信息

        index的urls.py的编写规则与MyProject文件夹的urls.py大致相同,这是最为简单的定义方法,此外还可以参考内置Admin功能的路由定义方法。在index的urls.py导入index的views.py文件,该文件用于编写视图函数或视图类,主要用于处理当前请求信息并返回响应内容给用户。路由信息path('', views.index)的views.index是指视图函数index处理网站首页的用户请求和响应过程。因此,在index的views.py中编写index函数的处理过程

        路由文件urls.py的路由定义规则是相对固定的,路由列表由urlpatterns表示,每个列表元素代表一条路由。路由是由Django的path函数定义的,该函数第一个参数是路由地址,第二个参数是路由所对应的处理函数(视图函数或视图类),这两个参数是路由定义的必选参数

        简而言之,Django 的路由(urls)系统的作用就是使 views 中处理数据的函数与请
求的 URL 建立映射关系。使请求到来之后,根据 urls.py 中的关系条目,查找到与请求对应的处理方法,从而返回给客户端 HTTP 页面数据,执行过程如图:

Django 项目中的 URL 规则定义放在 project 的 u

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

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

相关文章

【xss-labs-master】靶场通关详解!-----持续更新

XSS基础概念: 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其…

在线考试系统产品源码功能架构与技术解析

首先,它极大地提升了考试的便捷性和效率,使得教育机构、企业乃至个人能够随时随地组织考试,打破了传统考试在时间和空间上的限制。其次,通过自动化的评分和数据分析功能,在线考试系统能够迅速反馈考试结果,…

vim列编辑模式

在编辑文本时,经常会有这样的需求,对特定列进行进行批量编辑。比如批量注释一段代码,或者删除待定字符(如一列空格)。幸运的是VIM支持列编辑模式。 假设文本内容: Maximum length of a custom vocabulary…

【Vulnhub系列】Vulnhub Connect-The-Dots 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub Connect-The-Dots靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、主机发现 二、端口扫描 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or…

剪画小程序:巴黎奥运会,从画面到声音!

在巴黎奥运会的赛场上,每一个瞬间都伴随着独特的声音。那是观众的欢呼,是运动员冲刺的呐喊,是国歌奏响的激昂旋律。 如今,通过剪画音频提取,我们能够将这些珍贵的声音从精彩的画面中分离出来,单独珍藏。 想…

2024.8.2 作业

1.互斥锁 #include <myhead.h>// 1、创建一个互斥锁 pthread_mutex_t mutex;int num 520; // 票的个数// 定义线程体1 void *task1(void *arg) {while (1){// 3、获取锁资源pthread_mutex_lock(&mutex);if (num > 0){usleep(1000);num--;printf("张三买了一…

GCKontrol-GCAir工具链在飞机功能系统设计中的应用

前言 当前&#xff0c;数字化转型正引领着飞行器研发方式向智能化、协同化、定制化、自主化等方向发展&#xff0c;为飞行器研发带来了新的机遇和挑战。其中&#xff0c;系统仿真作为数字化转型的重要工具&#xff0c;在飞行器研发过程中发挥着关键作用。国际上&#xff0c;各…

Java - JDK17语法新增特性(如果想知道Java - JDK17语法新增常见的特性的知识点,那么只看这一篇就足够了!)

前言&#xff1a;Java在2021年发布了最新的长期支持版本&#xff1a;JDK 17。这个版本引入了许多新的语法特性&#xff0c;提升了开发效率和代码可读性。本文将简要介绍一些常见的新特性&#xff0c;帮助开发者快速掌握并应用于实际开发中。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨…

如何保证冰河AL0 400G 100W 的稳定运行?

要保证冰河 AL0 400G 100w 的稳定运行&#xff0c;可以考虑以下几点&#xff1a; 1. 适宜的工作环境&#xff1a;确保设备放置在通风良好、温度适宜的环境中。良好的散热条件有助于防止设备过热&#xff0c;因为过热可能会导致性能下降或故障。该设备采用纯铝合金外壳&#xf…

AI项目落地实战:SpringBoot3+SpringAI+Uniapp

前言 AI不仅仅是风口&#xff0c;也是今后的时代潮流。本人花心血开发了一套AI实战项目&#xff0c;可商用。支持h5&#xff0c;小程序&#xff0c;app三端。可拿来二开&#xff0c;也可直接上架。不用担心版权问题&#xff0c;但是如果是倒卖源码&#xff0c;本人会追究其责任…

【Linux网络】传输层协议:UDP 与 TCP

本篇博客整理了 TCP/IP 分层模型中传输层的 UDP 协议和 TCP 协议&#xff0c;旨在让读者更加深入理解网络协议栈的设计和网络编程。 目录 一、传输层 1&#xff09;端口号 Port .1- 五元组标识一个通信 .2- 端口号的作用 .3- 范围划分 2&#xff09;指令 netstat、iostat…

python的jieba库中文分词词频统计和合并

可能在设置问题模板的时候需要分析已有问句&#xff0c;然后统计词频&#xff0c;根据词频设计问题模板

B站宋红康JAVA基础视频教程个人笔记chapter02

文章目录 1.什么是标识符&#xff1f; 凡是自己取得名字都叫做标识符(类名&#xff0c;变量名&#xff0c;函数名等等) 2.标识符命名规范 包名&#xff1a;多单词组成所有字母都小写 --com.example.xxx 类名&#xff1a;多单词组成&#xff0c;所有单词的首字母大写 --MyClass …

手把手教你调用百度全球逆地理编码API接口-文末附带多种编程语言的完成版本

为什么要使用全球逆地理编码 在工作中有的时候需要根据经纬度转为对应位置信息&#xff0c;今天就遇到了这么一个业务场景&#xff0c;最终实现&#xff01;&#xff01;&#xff01; 接下来手把手教你get新技能哦&#xff0c;话不多说&#xff0c;开整&#xff01;&#xff0…

59简单学生管理系统【功能实现((完善注册、登录、详情页)、记住我 、安全退出、修改密码、修改学生信息、修改老师信息)】、JSP

功能实现 什么是JSP htmljava 5.完善注册、登录、详情页 html页面改用jsp 使用&#xff1a;<%java代码%>&#xff0c;展示用<%“行了”%> 注册 修改RegisterServlet 改用转发方式跳转 原因&#xff1a;注意重定向是两次请求&#xff0c;存在第一次请求中的数据会在…

HarmonyOS APP如何扩展应用功能?

前言 服务模块属于一个应用里面可以拓展的地方&#xff0c;三方服务或者新增加的服务全部可以放进来&#xff0c;这里用的核心组件就是Grid组件 一般的步骤 编写一个Gird的子组件item&#xff0c;这个item一般有图标和文字按照上下进行排列编写一个Grid的组件单元&#xff0c…

【优秀python大屏案例】基于python flask的前程无忧大数据岗位分析可视化大屏设计与实现

随着大数据和人工智能技术的迅猛发展&#xff0c;数据分析和可视化在各个行业中的应用越来越广泛。特别是在招聘领域&#xff0c;大数据分析不仅能够帮助企业更好地了解市场需求&#xff0c;还能为求职者提供科学的职业规划建议。本文探讨了基于Python Flask框架的前程无忧大数…

高效抓取网页模板:Go 1.19站点模板爬虫实战指南

基于Go 1.19的站点模板爬虫的原理是通过发送HTTP请求获取网页内容&#xff0c;然后使用正则表达式或HTML解析库来提取其中的模板内容。这种爬虫可以应用于以下几个方面&#xff1a; 数据抓取&#xff1a;通过爬取站点的模板内容&#xff0c;可以获取所需的数据&#xff0c;例如…

智谱AI张帆:大模型时代构建企业竞争力的四个维度

大模型并不是简单的对话&#xff0c;它润物细无声地贯穿整个服务体系。 7月27日&#xff0c;由《中国企业家》杂志社主办的2024&#xff08;第二十四届&#xff09;中国企业未来之星年会在上海举行。在“前沿微课”环节&#xff0c;智谱AI COO张帆进行了名为“大模型的企业级应…

RCE(远程代码执行漏洞)原理及漏洞利用

作用 RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。 原理 远程系统命令执行 一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙、入…