Django 路由配置(二)

一、路由

       就是根据用户请求的URL链接来判断对应的出来程序,并返回处理结果,也是就是URL和django的视图建立映射关系.

二、Django请求页面的步骤

  1、首先Django确定要使用的根URLconf模块,通过ROOT_URLCONF来设置,在settings.py配置文件中。但是如果传入 HttpRequest对象具有urlconf 属性(由中间件设置),则其值将用于替换ROOT_URLCONF设置

   

2、 Django加载该Python模块并查找该变量 urlpatterns。它是django.urls.path()和(或)django.urls.re_path()实例的序列(sequence)。urlpatterns表示路由模型,通过路由模型寻找里面具体的地址

3、Django按顺序运行每个URL模式,并在匹配所请求的URL的第一个URL中停止。

4、一旦正则表达式匹配,Django将导入并调用给定的视图,这是一个简单的Python函数(或基于类的视图)。该视图会获得如下参数:

  • 一个HttpRequest实例。
  • 如果匹配的正则表达式没有返回任何命名组,那么来自正则表达式的匹配将作为位置参数提供。
  • 关键字参数由正则表达式匹配的任何命名组组成,由可选kwargs参数中指定的任何参数覆盖。django.urls.path\(\)django.urls.re_path\(\)

5、如果没有正则表达式匹配,或者在此过程中的任何一点出现异常,Django将调用适当的错误处理视图

 

三、urls中path参数说明

https://docs.djangoproject.com/en/4.2/topics/http/urls/

 (1)系统已经配置好一个路由,这个路由访问就是django自带的后端管理系统

 启动项目  python manage.py runserver

通过地址加路由的admin去访问http://127.0.0.1:8000/admin/login/?next=/admin/

 (2) 设置自己的页面路由

   2.1  编写视图函数

from django.http import HttpResponse
from django.shortcuts import render# Create your views here.
# 视图函数
def info(request):#响应数据return HttpResponse('HelloWorld~~~~')

2.2 在urls中配置路径

from django.contrib import admin
from django.urls import path,include   #导包includefrom user.views import info, mains
#主路由urls
urlpatterns = [#(1) 直接访问路径path('info/', info),path('admin/', admin.site.urls),]

2.3  启动,访问http://127.0.0.1:8000/info/

 

四、路由分发  

  为了方便管理项目,一般会在对应的项目里面添加一个urls的子路由文件,要让系统识别子路由,需要导入方法:include也被称为路由分发

 

原因: django项目中多个app目录共用一个url容易造成混淆,后期维护也不方便

解决:使用路由分发,让每个app目录都单独拥有自己的urls

步骤:

1.在每个app目录都创建一个urls.py的文件(拷贝主路由urls.py进行修改!)

2.在视图veiws.py文件编写视图函数

from django.http import HttpResponse
from django.shortcuts import render# Create your views here.
# 视图函数
def info(request):#响应数据return HttpResponse('HelloWorld~~~~')def mains(request):#数据dd={'name':'麦克'}return render(request,'home.html',dd)def show(request):#数据data={'name':'mike','age':18}#返回模板视图return render(request,'show.html',{'data':data})

3.在urls导入app目录下的views.py文件 

from django.urls import path
#导入视图
from user.views import info,mains,show#如果shows页面可能有多个,那么需要用到命名空间。
# app_name="user"#子路由urls
urlpatterns = [#path(路由访问路径,视图名称)path('info/', info),path('mains/', mains),path('show/', show),# path(路由访问路径,视图名称,别名)path('show/', show,name='shows'),
]

 4. 模板页面 home.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>渲染视图</title>
</head>
<body>
<h1>欢迎您<span style="color:royalblue">【{{ name }}】</span> 来到!!<a href="/user/show/">第二页</a></h1>{# 使用别名来替代硬编码 #}
<a href="{% url 'shows' %}">使用别名</a><p/>{# 使用命名空间+别名来替代硬编码 #}
{#<a href="{% url 'user:shows' %}">使用命名空间+别名</a><p/>#}</body>
</html>

show.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>渲染视图</title>
</head>
<body><h1> hello ! {{ data }}</h1>
</body>
</html>

 5.在主路由配置子路由


from django.contrib import admin
from django.urls import path,include   #导包includefrom user.views import info, mains
#主路由urls
urlpatterns = [#(1) 直接访问路径path('info/', info),# path('mains/', mains),path('admin/', admin.site.urls),#(2)使用子路由来访问#一个应用对应一个子路由path('user/',include('user.urls'))
]

6.启动项目:http://127.0.0.1:8000/

 http://127.0.0.1:8000/user/mains/

点击第二页 或  单击使用别名

五、问题:如果shows页面可能有多个,那么需要用到命名空间。

(1)在子路由,进行定义命名空间 

(2)在home.html页面中使用

<a href="{% url 'user:shows' %}">使用命名空间+别名</a>

(3) 访问:http://127.0.0.1:8000/user/mains/ 

 

单击超链接

 

 

 

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

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

相关文章

flink的window和windowAll的区别

背景 在flink的窗口函数运用中&#xff0c;window和windowAll方法总是会引起混淆&#xff0c;特别是结合上GlobalWindow的组合时&#xff0c;更是如此&#xff0c;本文就来梳理下他们的区别和常见用法 window和windowAll的区别 window是KeyStream数据流的方法&#xff0c;其…

科大讯飞 vue.js 语音听写流式实现 全网首发

组件下载 还是最近的需求&#xff0c;页面表单输入元素过多&#xff0c;需要实现语音识别来由用户通过朗读的方式向表单中填写数据&#xff0c;尽量快的、高效的完成表单数据采集及输入。 国内科大讯飞在语音识别方面的建树还是有目共睹&#xff0c;于是还是选择了科大讯飞的平…

IP地理位置定位技术:保护网络安全的新利器

随着互联网的普及和网络活动的日益频繁&#xff0c;网络安全问题越来越受到人们的关注。恶意流量攻击、网络欺诈等网络安全威胁层出不穷&#xff0c;如何准确识别和定位网络攻击者成为一项重要任务。在这个背景下&#xff0c;IP地理位置定位技术应运而生&#xff0c;为网络安全…

机器人制作开源方案 | 钻孔植树一体化沙漠车

作者&#xff1a;徐邦国、张博宇、刘露、李晶晶、吕洁秀单位&#xff1a;天津职业技术师范大学 机械工程学院指导老师&#xff1a;何永利 摘要&#xff1a;本项目旨在设计一种专用于沙漠植树的植树车&#xff0c;以沙漠自动化植树为研究对象&#xff0c;提出一种创新式钻…

[uni-app]记录APP端跳转页面自动滚动到底部的bug

文章目录 bug描述原因分析: 处理方案 bug描述 1.点击的A页面, 跳转到了B页面, 第一次页面正常显示 2.从B页面返回A页面 3.A页面不进行任何操作,再次点击A页面进入B页面 4.B页面自动滚动到底部. 原因 看一段A页面代码 let that thisthis.defaultScrollTop uni.getStorageSy…

[github初学者教程] 分支管理-以及问题解决

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。跨领域…

Unity--互动组件(Scrollbar)||Unity--互动组件(DropDown )

此组件中的&#xff0c;交互&#xff0c;过渡&#xff0c;导航与文章&#xff08;Unity--互动组件&#xff08;Button&#xff09;&#xff09;中的介绍如同&#xff1b; handle rect&#xff1a;&#xff08;父节点矩形&#xff09; 用于控件的滑动“句柄”部分的图形&#xf…

什么是RS485通信

RS-485是一种通讯接口标准&#xff0c;RS就是Recommended Standard的缩写&#xff08;推荐标准的意思&#xff09;485是标识号。 RS485采用总线的接线方式&#xff0c;广泛应用于数据采集和控制&#xff0c;它的主要优点之一是它允许将多个RS485设备放在同一条总线上。 多设备…

苹果CMS首涂第30套可装修DIY主题模板免授权版

这是一款可以装修的主题&#xff0c;类似淘宝店装修一样&#xff0c;可以针对首页、栏目页、详情页、播放页进行自定义装修&#xff0c;内置10个模块自由选择、添加、修改、删除、排序操作&#xff0c;后续升级还会增加更多实用和个性模块供选择&#xff0c;主题内包含的导航、…

OpenVPN Connect使用连接公网VPN服务器实现内网穿透

安装并运行OpenVPN Connect 点击AGREE 添加配置.OVPN文件 点击连接 连接成功 两个内网主机通过公网VPN穿透

类与对象(上篇)

前言 在之前我们学的C入门主要是为现在学习类与对象打基础&#xff0c;今天我们才算真正开始学习C了。因为类与对象的知识点比较多&#xff0c;所以我们将它分为三部分讲解&#xff0c;今天我们学习类与对象的上篇。 一、面向过程和面向对象的初步认识 1、面向过程 面向过程顾…

工作记录---为什么双11当天不能申请退款?(有趣~)

为什么&#xff1f; 服务降级了 服务降级&#xff1a; 当服务器压力剧增的情况下&#xff0c;根据实际业务情况及流量&#xff0c;对一些服务和页面有策略的不处理或换种简单的方式处理&#xff0c;从而释放服务器资源以保证核心交易正常运作或高效运作。 分布式系统的降级…

OpenCvSharp从入门到实践-(01)认识OpenCvSharp开发环境搭建

目录 一、OpenCV 二、OpenCvSharp 三、OpenCvSharp开发环境搭建 四、下载 五、其他 一、OpenCV OpenCV是基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习函数库&#xff0c;支持Windows、Linux、Android和Mac OS操作系统。OpenCV由一系…

C语言中的指针(上)

目录 一、基本概念 1.变量的存储空间 2.定义指针 3.引用与解引用 二、指针的算术运算、类型以及通用指针 1.指针的算数运算 2.指针类型以及通用型指针 三、指向指针的指针&#xff08;pointers to pointers&#xff09; 四、函数传值以及传引用 1.局部变量 2.从存储地…

Failed to execute org.scala-tools:maven-scala-plugin:2.15.2解决

原因也不是很清楚&#xff0c;查看一个博主文章(net.alchim31.maven:scala-maven-plugin&#xff1a;maven依赖无法下载或无法编译)得到的解决方案&#xff1a; 在idea的terminal执行以下语句即可实现maven对scala代码的编译&#xff1a; mvn clean scala:compile compile pac…

代码随想录算法训练营第四十一天【动态规划part03】 | 343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 求解思路&#xff1a; 动规五部曲 确定dp数组及其下标含义&#xff1a;dp[i] 拆分i&#xff0c;可以得到的最大乘积为dp[i]确定递推公式&#xff1a;从1开始遍…

测试Bard和ChatGPT关于双休的法规和推理

Bard是试验品&#xff0c;chatgpt是3.5版的。 首先带着问题&#xff0c;借助网络搜索&#xff0c;从政府官方网站等权威网站进行确认&#xff0c;已知正确答案的情况下&#xff0c;再来印证两个大语言模型的优劣。 想要了解的问题是&#xff0c;在中国&#xff0c;跟法定工作…

linux rsyslog综合实战1

本次我们通过rsyslog服务将A节点服务器上的单个日志(Path:/var/log/245-1.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS Linux release 7.9.2009 (Core)rs…

原理Redis-Dict字典

Dict 1) Dict组成2) Dict的扩容3) Dict的收缩4) Dict的rehash5) 总结 1) Dict组成 Redis是一个键值型&#xff08;Key-Value Pair&#xff09;的数据库&#xff0c;可以根据键实现快速的增删改查。而键与值的映射关系正是通过Dict来实现的。 Dict由三部分组成&#xff0c;分别…

ES6有何新特性?(下篇)

目录 函数参数的默认值设置 rest参数 扩展运算符 Symbol 迭代器 生成器 Promise Class 数值扩展 对象方法扩展 模块化 大家好呀&#xff01;今天这篇文章继续为大家介绍ES6的新特性&#xff0c;上上上篇文章介绍了一部分&#xff0c;这篇文章会将剩下的部分新增的特…