Django之路由分发

1.include方法进行路由分发

在Django中,include函数用于将一个URL模式包含到另一个URL模式中,实现路由的分发。
一般时以include+app的形式,将功能拆分不到不同的app中。
当使用include函数时,需要指定一个字符串参数,该字符串参数是一个URL模式的命名空间。Django会根据该命名空间去查找对应的URL模式,并将其包含到当前的URL模式中。include一般返回数据元组。

a.准备条件

由于创建app时,不会给我们自动创建属于其的urls.py,我们需要自己创建,在前文初入门时我们创建了一个app名为test2,所以我们自己创建urls.py在其目录中,可见:
image.png
我们可以将之前test1中创建的work和hello两个path转移到/test2/urls.py中/:
image.png
因为要使用include方法,所以我们需要导入一些依赖包:

from django.conf.urls import url, include
b.实验:include的用法

那么现在在主路由中我们只有admin一个路径,此时我们无法访问到test2中的urls,如何解决,使用include进行路由分发,在主路由中加上:
image.png
此时,我们再去访问网站,可以看见网站给了两个路径:
image.png
此时test2/中有我们之前转移的work和hello两个方法,我们只需要像使用include方法分发前加上路径就可以正常使用:
image.png
image.png

2.传统路由手动路由分发,无需app

手动路由分发可以与app无关。 可以不定义app_name。具体的app_name会专门介绍。
那么现在看不用include方法,手动分发的例子:
上面我们在test1中创建了test2app,为了更好的区分,我将其更改为web名,如果不用include方法进行路由分发,就会变成以下:
urls:
image.png
或者写成以下的:
image.png
这种写法更偏向于列表的形式。
效果:
image.png
总而言之,手动分发是纯粹帮助提取功能的URL,防止重复编写。

3.路由分发的本质

从本质上来说,路由分发是以url对应函数或者元组:
url对应函数:

path('web/wang/', views.hello),

url对应元组:

path('web/requ',    (元素,appname元素,namespance元素)    ),path('web/',    include("web。urls")    ),  # 查看include 也是元组
path('web/',     ([],None,None)     ),
4.关于name

name是用于单APP的情况,如果是多APP的话,需要为每个app添加单独的namespace,
给一个路由起个名字然后根据名字反向生成URL。
例如我们讲web的urls三个功能取名name:
image.png
一般可以用到的地方只有两个

a.在视图函数中生成url

例如:
image.png
image.png
那么当我们访问“name”为“w4”的url时,就会反向给我们一个url的结果,运行后如下:
image.png

b.HTML模板

在html中,作为标签来使用,一般作为超链接的标签:

<a href="">演示</a>
c.扩展

那么在之后的学习中,name还可以在你进行权限管理的时候,配合你进行,这样会大大提高你的工作效率。

5.关于namespace

namespace是Django架构中用于组织URL模式的机制,它可以避免URL冲突并提高代码的可维护性。通过在URL模式中定义app_name属性,并在全局URL配置中使用include函数引用namespace,可以实现URL的分组和命名空间。
一般namespace都是去辅助name使用。例如:
主路由中:
image.png
那么在web这个app中,我们应该在其urls.py的最后加上app_name:
image.png
那么他们的作用是什么呢,在以后某个URL或者视图中反向生成的时候,我们可以这样用:
image.png

6.扩展
a.使用了name和namespace的手动分发

主路由:
image.png
在views中:
image.png
手动分发就不会去找namespace

b.Django admin组件源码

/api/xxxx/xx x1:yy:xx
image.png

c. 如何解决url中最后的/问题

很多时候,我们在访问一些网站时,网址最后都会有个/,那么如果不加/会发生什么?
image.png
301,也就是重定向发生错误,那么该如何解决?
只需在主路由的setting.py加上以下设定:

APPEND_SLASH = False

但是并不建议更改,因为会增加服务器的负担,这里大家仅仅只需要知道解决办法做以了解就好

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

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

相关文章

#循循渐进学51单片机#UART串口通信#not.10

1、能够理解UART串口通信的基本原理和通信过程。 1&#xff09;串行通信的初步认识 并行通信&#xff1a;通信时数据的各个位同时传送&#xff0c;可以实现字节为单位通信&#xff0c;但是通信线占用资源太多&#xff0c;成本高。 串行通信&#xff1a;一次只能发送一位&…

CTF 全讲解:[SWPUCTF 2021 新生赛]jicao

文章目录 参考环境题目index.phphighlight_file()include()多次调用&#xff0c;多次执行单次调用&#xff0c;单次执行 $_POST超全局变量HackBarHackBar 插件的获取 $_POST打开 HackBar 插件通过 HackBar 插件发起 POST 请求 GET 请求查询字符串超全局变量 $_GET JSONJSON 数据…

Lua学习笔记:词法分析

前言 本篇在讲什么 Lua的词法分析 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449; ♠ 一级标题…

基于Spring Boot的网上租贸系统

目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 本课题是根据用户的需要以及网络的优势建立的一个基于Spring Boot的网上租贸系统&#xff0c;来满足用户网络商品租赁的需求。 本网上租贸系统应用Java技术&#xff0…

IP地址欺骗的危害与后果

IP地址欺骗&#xff0c;也被称为IP地址伪装或IP地址欺诈&#xff0c;是一种网络攻击技术&#xff0c;旨在伪装或隐藏攻击者的真实IP地址。尽管这种技术可能有一些合法的用途&#xff0c;例如保护用户的隐私或绕过地理位置限制&#xff0c;但它也经常被恶意黑客用于不法行为。本…

阿里云 linux 的nginx 配置uni-app的H5前端项目vue,后端接口阿里云。

背景 vue项目调用接口是阿里云的&#xff0c;H5网站也要部署到阿里云&#xff0c;2个不同的服务器&#xff0c;需要做nginx部署与api代理。 1.端口配置 首先当然是买个阿里云服务器&#xff0c;这里是配置是linux系统&#xff0c;配置访问的域名 &#xff0c;再接着&#xf…

centos搭建activemq5.16

下载jdk、activemq&#xff08;我这里都放在在/usr/local&#xff09;之后。。。 在/usr/local/activemq/bin/目录下有一个env文件添加JAVA_HOME 注意activemq.xml里面不能出现中文&#xff0c;注释也不行 接下来在/usr/lib/systemd/system/创建activemq.service文件 # 单元节…

华为云云耀云服务器 L 实例评测|配置教程 + 用 Python 简单绘图

文章目录 Part.I IntroductionChap.I 云耀云服务器 L 实例简介Chap.II 参与活动步骤 Part.II 配置Chap.I 初步配置Chap.II 配置安全组 Part.III 简单使用Chap.I VScode 远程连接华为云Chap.II 简单绘图 Reference Part.I Introduction 本篇博文是为了参与华为“【有奖征文】华…

flowable可使用元素介绍

1. 事件 Events 事件描述图标空启动事件空启动事件未指定触发器&#xff0c;由用户调用的启动事件。定时启动事件定时启动事件在指定时间内创建一次或多次的流程实例。消息启动事件消息启动事件使用具名消息启动流程实例。消息名用于定位指定的启动事件。一个流程定义不得包含…

源码:TMS FlexCel Studio for .NET 7.19

TMS FlexCel Studio for .NET 是100% 托管代码 Excel 文件操作引擎以及 Excel 和 PDF 报告生成&#xff0c;适用于 .NET、Xamarin.iOS、Xamarin.Android、Xamarin.Mac、Windows Phone 和 Windows Store 功能概述 使用 FlexCel Studio for .NET 创建可动态快速读写 Excel 文件的…

星际争霸之小霸王之小蜜蜂(十四)--资本家的眼泪

系列文章目录 星际争霸之小霸王之小蜜蜂&#xff08;十三&#xff09;--接着奏乐接着舞 星际争霸之小霸王之小蜜蜂&#xff08;十二&#xff09;--猫有九条命 星际争霸之小霸王之小蜜蜂&#xff08;十一&#xff09;--杀杀杀 星际争霸之小霸王之小蜜蜂&#xff08;十&#xf…

2023华为杯数学建模D题第三问——区域双碳目标情景设计样例

在第二问建立好预测模型的基础上&#xff0c;如何设计第三问所说的区域双碳路径&#xff0c;以对宏观政策进行指导&#xff01; 采用STIRPA的基本模型对中国碳达峰时间进行预测&#xff0c;对该模型公式两边取对数得到&#xff1a; 其中&#xff1a;P为人口&#xff0c;A为GDP…

01_docker镜像管理:80分钟一口气学完docker+k8s!带你掌握docker+k8s所有核心知识点,全程干货,无废话!

docker镜像的实际使用学习 开发过程中&#xff0c;需要安装很多三方工具&#xff0c;比如etcd、kafka、mysql、nginx等等 1、下载安装Docker工具。 2、获取该软件的Docker镜像&#xff08;基本上&#xff0c;都能搜索到核实的镜像&#xff09;&#xff0c;下载镜像nginx镜像…

研究生选控制嵌入式还是机器视觉好?

研究生选控制嵌入式还是机器视觉好&#xff1f; 我是嵌入式/硬件方向转的算法&#xff0c;现在是公司的算法负责人&#xff0c;如果再让我选一次&#xff0c;我是不会再选嵌入式方 向&#xff0c;嵌入式如果只做技术是没前途的。 你要是有一定自学能力&#xff0c;能自己在学校…

以太坊代币标准ERC20、ERC721

两个概念 ERC(Ethereum Request for Comment) 以太坊意见征集稿EIP(Ethereum Improvement Proposals)以太坊改进提案 ERC和EIP用于使得以太坊更加完善&#xff1b;在ERC中提出了很多标准&#xff0c;用的最多的标准就是它的Token标准; 有哪些标准详细见https://eips.ethereum…

Ant Design分页组件中实现禁止点击当前页按钮的方法

这里需要使用到Ant Design分页组件pagination的一个回调函数onChange onChange函数用来监听鼠标点击事件&#xff0c; 它有两个入参》1. 点击分页按钮时获取到的页码 2. 每页最大显示条数 所以&#xff0c;禁止点击当前分页按钮的核心逻辑是&#xff1a; if {当前页的页…

HBuilder X 未检测到手机或模拟器(安卓端)

解决办法 1、找到HBuilderX安装目录下的D:\HBuilderX\plugins\launcher\tools\adbs。 2、应用程序和应用程序扩展删除掉 3、然后把1.0.31目录下的文件拷贝到D:\HBuilderX\plugins\launcher\tools\adbs里&#xff0c;直接覆盖即可。 4、重启HBuilderX就可以检测到手机了。 注意…

InputAction的使用

感觉Unity中InputAction的使用&#xff0c;步步都是坑。 需求点介绍 当用户长按0.5s 键盘X或者VR left controller primaryButton (即X键)时&#xff0c;显示下一个图片。 步骤总览 创建InputAction资产将该InputAction资产绑定到某个GameObject上在对应的script中&#xf…

Redis延迟双删-架构案例2021(三十二)

数据库设计 某医药销售企业因业务发展&#xff0c;需要建立线上药品销售系统&#xff0c;为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外&#xff0c;还需要提供当前热销产品排名、评价分类管理等功能。 通过对需求的分析&#xf…

【C语言】指针的进阶(四)—— 企业笔试题解析

笔试题1&#xff1a; int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】在x86环境下运行 【解析】 &a是取出整个数组的地址&#xff0c;&a就表示整个数组&#xff0c;因此…