Django自学笔记 2-2 URL详细匹配规则

python入门 django 入门(三) request、session、response、cookie等操作 本人java10年开发经验,现就职于电信,因工作需要学习python,记录自己的学习记录。后面也会持续分享真实工作经验,及项目。欢迎大家互关,一起学习!!文章有不严谨的地方请指出 后面做过项目后,对python有更深的理解了,会录制免费视频,讲解真实项目 接着上篇博客的项目,今天继续学习django的视图,只考虑前后端分离模式也就是只返回json数据,其它的请自学习 其中view就是python的视图,v层,核心的代码逻辑都是写在view中 测试项目需要用到postman,下载: 链接:https://p 阅读详情

————总目录——前言——框架版本————

======================= 大爽歌作,made by big shuang =======================

二 URL详细匹配规则

本章第一节中我们简单介绍了URL与View关系

简单概括来说,网页请求的url会通过urls.py里面的urlpatterns列表中的urlpattern来匹配对应的view方法,然后view方法会返回一个HttpResponse
过程示意如下:
url - > urlpattern - > view

本节就来详细说下这个匹配关系

本文参考文献:module-django.urls.conf

1- urlpattern

urlpattern可以调用两种函数获得:django.urls.path()与django.urls.re_path()
后者是用于正则匹配url的(新手一般用不到)
这两种函数的参数和含义是一样的

path(route, view, kwargs=None, name=None)
re_path(route, view, kwargs=None, name=None)
  • route : 要匹配的url
  • view : 匹配后要调用的view函数名
  • kwargs: 向view函数传递额外的参数(route也可以传递参数给view, 所以对于新手来说,kwargs这个比较少用到)
  • name: urlpattern的名字,主要用于后面在模板中指定urlpattern。(因为url中间可能会修改,模板中写死了的话,改起来麻烦)

2 - 传参

本章第一节中我们举了个最简单的hello例子。 这里我们进行一个简单的拓展思考,如果这个hello后面要跟上访问的人的名字呢
比如浏览器访问http://127.0.0.1:8000/hello/tony, 希望返回结果hello, tony
访问http://127.0.0.1:8000/hello/Bob, 希望返回hello, Bob
这个时候如果像第一节里面那样一个一个写,就麻烦了,一个名字就要写一个view方法,也不现实。
所以我们需要能够把route的一些字段作为参数传递给view函数

比如要将http://127.0.0.1:8000/hello/Bob中的Bob作为参数的话,那么可以这么写

path('hello/<slug:name>', views.hello)

同时views.py中的hello方法也要添加一个参数勇于去接受这个传入的变量

def hello(request, name):
    return HttpResponse("Hello, %s" % name)

这里细下这句'hello/<slug:name>'

  1. 若要从URL捕获字符串作为参数传递给view函数,需要使用尖括号,尖括号内写捕获后的变量名。
    比如'hello/<name>'就会将name对应位置的字符串捕获并以name作为变量名传入view函数。
  2. 捕获的值可以选择性地包括转换器类型,设置后会将捕获后的字符串转换为对应类型。例如,使用<int:value>来捕获整型参数, 其中:前为转换器类型,:后为捕获后的变量名。(如果不包含转换器,则匹配除/字符外的任何字符串)

详细官方文档:urls/#example

3 转换器(converters)类型

Django默认的转换器有:

  • str:转换器默认值,匹配除路径分隔符'/’外的任何非空字符串
  • int:匹配零或任何正整数,返回一个int。
  • slug:匹配由ASCII字母或数字以及连字符和下划线组成的任何slug字符串。
  • uuid:匹配格式化的UUID,返回一个UUID实例。
  • path:匹配任何非空字符串,包括路径分隔符’/’。

前三个用的比较多,新手应该暂时用不到后两个。

同时对于更复杂的匹配需求,可以定义自己的路径转换器,
具体可查阅官方文档: registering-custom-path-converters

4 使用include收纳不同app的url

对于一个网站系统而言,可能会有很多功能模块app,每个功能模块app又有各自的urlpatterns
如果这些全部都放在项目文件夹project_name下的项目名文件夹project_name/project_name中的urls.py中的话,
会很混乱也不方便管理,所以最好的办法是,每个功能模块app对应的urlpatterns放在app文件夹下的,然后在project_name/project_name中的urls.py使用include方法进行导入。
以我在做的简易教务系统为例,其有两个app: user、course
要导入 user中的url到主url中的话,
则主urls.py(详细路径为SSCMS/SSCMS/urls.py)代码如下

from django.urls import path, include

urlpatterns = [
    path('user/', include("user.urls")),
    # ... other urlpatterns
]

其SSCMS/user/urls.py为

from django.urls import path
from user import views

urlpatterns = [
    path('login/', views.home, name="login"),
    path('login/<slug:kind>', views.login, name="login"),
    path('register/<slug:kind>', views.register, name="register"),

    path('update/<slug:kind>', views.update, name="update"),
    path('logout/', views.logout, name="logout"),
]

此事要访问user中的名为login的urlpattern的话,浏览器应该请求的网站为

http://127.0.0.1:8000/user/login/

使用**include方法**
实际上会将一组url“根植到”其他url之下。
比如上面的例子就将SSCMS/user/urls.py中的urlpatterns“根植”到SSCMS/SSCMS/urls.py中的user/下。

更多细节,可见include的官方文档:including-other-urlconfs

Ubuntu 14.04 + Django + PostgreSQL 9.3 生产部署实战指南 PostgreSQL 是支持 JSONB、全文检索、行级安全等高级数据语义的关系型数据库;Django 是基于 Python 的高抽象 Web 框架,其 ORM 对 PostgreSQL 原生特性(如 ArrayField、HStoreField)具备深度适配能力。在遗留系统运维场景中,Ubuntu 14.04 作为长期稳定基线,常与 Django 1.8/1.11 和 PostgreSQL 9.3 组合使用——该组合虽已停止官方支持,却广泛存在于政务、教育及 SaaS 类生产环境。本文聚焦真实运维约束下的 阅读详情

相关推荐

视频转文字与RAG:把B站收藏夹变成可检索的知识库

视频内容天然不适合检索与管理,教学视频无法全文搜索、难以精准引用,收藏夹往往沦为“吃灰区”。视频转文字技术通过语音识别(ASR)将语音转化为可搜索的文本,解决了内容电子化的问题,但这只是入口。要真正让内容可用,还需结合知识库与RAG(检索增强生成)技术:将转写文本切分、向量化、存储,再通过语义检索与LLM生成回答,实现跨视频AI问答。多P批量处理与角标溯源进一步提升了效率与可信度,前者解决合集内容的规模化沉淀,后者通过保留时间戳与元数据,让AI回答有据可查。这套链路适用于自学备考、技术内容创作、企业培训等场

weixin_34068198的博客 299

python+django:5、路径配置方式

urls.py的配置规则

weixin_43579528的博客 221

Django 4.x WWW 网址使用示例和配置方法

大家好,我是Mr数据杨,今天将通过三国演义的故事,让我们一起理解'什么是网址'。就好像古代战争中,每个城池都有其独特的地理位置,诸葛亮要发兵攻打曹操,就需要知道许昌的位置。同样,在互联网世界中,每个网站也有独一无二的位置,也就是通常所说的'网址'。

Mr数据杨 3万+

杂项 - 对于Django 的静态文件路径配置和模板配置路径理解 - 表单验证器和模型验证器 - 个人理解

要理解这两个配置,就要了解 Django 框架的 view.py 视图文件,在视图文件内,Django 会在视图函数内回传一个.html后缀的模板文件,这里就是django 会去第一个配置的路径下找模板,并且找到该指定的html文件名,然后再利用该.html模板文件,去寻找所需的静态文件,如js、css文件等,注意不包括了其他的被继承的.html后缀的模板文件,配置才会生效,将所有 app 里面的所有静态文件都复制到该路径下,方便查找。这三个配置就好了,这三个是最最关键的,上线要用的,

Muxiu 754

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 559

500道C++面试高频题解析(附答案、实战示例与进阶追问)

本文提供500道C++面试高频题的详细解析,涵盖基础概念到进阶应用,包括面向对象编程、内存管理、现代C++特性、并发编程等核心考点。每道题配有实战示例和进阶追问,帮助开发者突破八股文局限,掌握解决实际问题的能力,适合准备C++技术面试的工程师系统复习。

weixin_29002595的博客 311

Django学习 day59之Django第五日

Django第五日路由层路由匹配取消自动加斜杠 APPEND_SLASH无名分组有名分组无名有名是否可以混合使用反向解析django2.0版本对比1.0版本的区别path转化器自定义转化器(不重要) 路由层 路由匹配 # 错误示范 url(r'test',views.test), url(r'testadd',views.testadd) # 如上两个路由匹配,因为代码从上到下的顺序,哪怕输入了testadd,也会优先服从了正则test的匹配 # 所以正则逻辑要严谨 ^$号一定要加 url方法第一个

wuzeipero的博客 187

Mem0 vs LangMem vs Letta:三大AI记忆框架实战对比(附代码示例)

本文深入对比了Mem0、LangMem和Letta三大AI记忆框架的核心特性与适用场景。Mem0提供开箱即用的记忆管理服务,适合快速集成;LangMem深度融入LangGraph生态,适合复杂工作流;Letta则采用虚拟内存系统,旨在突破上下文窗口限制。文章通过实战代码示例,为开发者选择适合其业务需求的AI记忆解决方案提供了清晰指南。

g9h0i1的博客 679

django--项目结构,路径匹配,path函数,re_path函数,请求对象

django--项目结构,路径匹配,path函数,re_path函数,请求对象

qq_55092161的博客 618

Flutter项目在M1/M2 Mac上跑iOS模拟器报错?手把手教你搞定‘arm64架构不兼容’问题

本文详细解析了Flutter项目在M1/M2 Mac上运行iOS模拟器时遇到的‘arm64架构不兼容’问题,提供了多种解决方案,包括排除模拟器的arm64架构、强制使用x86_64架构以及修改插件Podspec文件。帮助开发者快速解决架构兼容性问题,提升开发效率。

weixin_33713707的博客 336

開機自動進入UEFI Interactive Shell無法正常開機怎麼辦?

BIOS/UEFI,啟動後進入UEFI Interactive Shell大多數人都告訴你沒有安裝系統去裝系統吧,但你明明昨天還在運行系統?今天就這樣?有沒有解決辦法?

sheaahhoi1的博客 7742

django中路由匹配规则

1、定义 指url与后端视图之间的一一映射关系 2、添加路由以及匹配规则 1)需要在全局路由文件中(url.py),urlpatterns列表中添加路由条目 2)urlpatterns是固定的,是列表;urlpatterns的条目总数就是路由总数 3)urlpatterns列表从上到下进行匹配(路由寻址) 4)urlpatterns列表中的条目一旦匹配成功,就会终止往下匹配 5)urlpatterns列表中条目匹配失败,会一直往下匹配 6)如果全部条目都匹配失败,那么会抛出404异常。 7

python全栈 3480

python基础语法与数据结构

本文摘要: Python基础语法包含输入输出、函数、变量、数据类型及运算符等内容。输入函数input()获取键盘输入并以字符串存储,输出函数print()可格式化输出数据。函数通过def定义,可带参数和返回值,提高代码复用性。变量无需声明类型,可动态赋值。数据类型包括数字、字符串、布尔及复合类型,可通过type()查看。运算符包含算术、赋值等类型,其中复合赋值运算符如+=可简化运算。类型转换函数如int()、str()等可实现显式类型转换。这些基础语法构成Python编程的核心要素。

MM602388的博客 434

【2014-08-18】Django自学笔记:视图

Django自学笔记,介绍Django视图函数(View)的编写,包括映射URL与视图的urls.py配置、使用正则捕获URL参数、HttpResponse返回响应以及URLconf的匹配规则说明。

cstriker1407的专栏 28

手把手教你用支付宝密钥工具生成RSA2密钥对(含Windows/Mac操作截图)

本文详细介绍了如何使用支付宝密钥工具生成RSA2密钥对,包括Windows和Mac平台的操作步骤与截图。从工具下载、安装到密钥生成、配置支付宝平台,再到开发环境集成实战,手把手教你完成支付宝支付接口对接。特别强调密钥安全管理和最佳实践,帮助开发者避免常见安全隐患。

mongodb5scout的博客 257

PyInstaller打包后在Win7无法运行,提示缺少`api-ms-win-core-path-l1-1-0.dll`问题解决

这个问题的关键在于Python 3.12和Windows 7之间的兼容性问题。解决方法是使用Python 3.8.8版本进行打包,确保程序能够在Windows 7系统上运行。如果你也遇到类似的问题,不妨尝试降级Python版本,看看是否能够解决。希望我的经验能够帮到你!如果你在使用PyInstaller打包时遇到其他问题,欢迎留言讨论。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 994

Django自学笔记0-0 目录

本篇博客只有目录,正文内容在目录章节链接的博客里 除目录本身外,没有链接的章节,说明内容还没开始编辑 总目录 0-前言 —— 0-0 目录 —— 0-1 简介 —— 0-2 框架版本与相关工具 1 - 入门 —— 1-1 新建项目 —— 1-2 配置说明 —— 1-3 常用命令和常见问题 2 - URL与View —— 2-1 URL与View关系 —— 2-2 URL详细匹配规则 ...

大爽老师的博客 2258

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Django3:URL和视图_django3 baseurl,Golang面试基础题

url的匹配规则。并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的id都是int类型,那么可以这样写int:id,以后匹配的时候,就只会匹配到id为int类型的url,而不会匹配其他的url,并且在视图函数中获取这个参数的时候,就已经被转换成一个int类型了。在项目变大以后,经常不会把所有的url匹配规则都放在项目的urls.py文件中,而是每个app都有自己的urls.py文件,在这个文件中存储的都是当前这个app的所有url匹配规则。传到视图函数中的时候,会作为一个关键字参数传过去。

2401_84254530的博客 1038

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Django自学笔记 3-3 模板常用语法

————总目录——前言——框架版本———— ======================= 大爽歌作,made by big shuang ======================= 三、模板常用知识 1 常用Tags 调整url写法 <a href="/register/">register</a> 统一改为通过urls.py里面指定的urlpattern的name来访问 <a href="{% url 'register' %}">register</.

大爽老师的博客 554

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Django3:URL和视图_django3 baseurl,2024年最新Golang基础开发入门

这时候我们可以在path函数中,使用尖括号的形式来定义一个参数。并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的id都是int类型,那么可以这样写int:id,以后匹配的时候,就只会匹配到id为int类型的url,而不会匹配其他的url,并且在视图函数中获取这个参数的时候,就已经被转换成一个int类型了。在项目变大以后,经常不会把所有的url匹配规则都放在项目的urls.py文件中,而是每个app都有自己的urls.py文件,在这个文件中存储的都是当前这个app的所有url匹配规则。

2401_84247760的博客 766

Django3:URL和视图_django3 baseurl(1),2024年最新Golang多态实现原理

这时候我们可以在path函数中,使用尖括号的形式来定义一个参数。并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的id都是int类型,那么可以这样写int:id,以后匹配的时候,就只会匹配到id为int类型的url,而不会匹配其他的url,并且在视图函数中获取这个参数的时候,就已经被转换成一个int类型了。在项目变大以后,经常不会把所有的url匹配规则都放在项目的urls.py文件中,而是每个app都有自己的urls.py文件,在这个文件中存储的都是当前这个app的所有url匹配规则。

2401_84254474的博客 657

Django之MTV实战(2)

辅助视频教程: Python基础教程|xin3721自学网ul li id=itemtitlePython3 从入门到精通视频教程/li /ul ul li class=description Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),https://www.xin3721.com/eschool/pythonxin3721/ 1. 回顾知识 上一篇文章已经教会了大家怎么安装Django和简单的配置,相信大家应该早就学会

chinaherolts2008的博客 181

自学网python教程视频-Python爬虫之Django视频教程

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。Django (Python Web 框架) 框架介绍Dja...

weixin_37988176的博客 419

路由(urls)

注意:当网站功能较多时,可以在该功能文件夹里建一个urls.py文件,将该功能模块下的URL全部写在该文件里,但是要在全局的urls.py中使用include方法实现URL映射分发。l 普通URL:re_path('^index/',view.index),re_path('^home/',view.Home.as_view())Ø 不提取参数:比如“re_path(articles/([0-9]{4})/”,表示四位数字,每一个数字都是0到9的任意数字。URL字符串不以“/”开头,但要以“/”结尾。

橙子味冰可乐的博客 2014

M2.7本地部署实战:轻量级代码大模型在笔记本上的全链路落地

代码大模型(Code LLM)是面向软件开发任务的专用大语言模型,其核心原理在于结合代码语法结构(如AST)、符号表感知与MoE稀疏激活机制,在有限算力下实现高精度函数级生成。相比通用大模型,它通过位置编码增强、KV缓存分块优化和量化推理等关键技术,显著提升本地部署可行性与工程实用性。技术价值体现在低显存占用(<6GB)、高上下文支持(32K)及IDE深度集成能力,广泛应用于VS Code智能补全、CI/CD脚本生成、Kubernetes调试等真实开发场景。本文聚焦MiniMax M2.7这一典型轻量级代码

weixin_33739646的博客 413

基于Python与Vue.js的舆情分析系统:毕业设计全栈开发实战

大数据分析是处理海量信息、挖掘潜在价值的关键技术,其核心原理在于通过分布式计算、数据挖掘与机器学习算法,从非结构化数据中提取模式与洞见。在工程实践中,结合Python生态的数据处理能力与Web框架,可以高效构建具备实时分析能力的应用系统。这类技术的价值在于将原始数据转化为可操作的商业智能,广泛应用于社交媒体监控、市场趋势洞察和公共舆情管理等领域。本文聚焦于网络舆情热点话题分析,详细阐述了如何利用Django构建后端API服务,并运用Vue.js开发交互式数据可视化看板,实现从数据采集、情感分析到热点发现的全

weixin_34280237的博客 698
上一篇: Django 小实例S1 简易学生选课管理系统 —— 四、实现登录页面
下一篇: Django自学笔记 2-3 视图(view)函数
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值