Django的路由系统

用户访问了哪个 URL 就映射到哪个path然后到对应的方法  ,方法处理后,转到新的URL(可以是具体网址也可以是path )

1.单一路由

def test(request):
   pass

urlpatterns = [ path('test/','test), ]

 

 2.正则路由

复制代码
#-----传单个值
def edit(request,a1)
     pass


urlpatterns = [
        re_path(r'edit/(\w+)',edit),
]


a1与(\w+)对应,也可以写多个/隔开就行,接收的时候也要写多个参数,位置严格一一对应。

#-----传多个值
def edit(request,a1,a2)
     pass


urlpatterns = [
        re_path(r'edit/(\w+)/(\w+)',edit),
]

html传参的时候可以写成
<a href="/edit/{{row.id}}">编辑</a>

#-----给接收的参数起名字(与方法参数位置可不对应)

def edit(request,a1,a2)
     pass

urlpatterns = [
          re_path(r'edit/(?P<a2>\w+)/(?P<a1>\w+)',edit),
]

#-------伪静态

def edit(request,a1)
     pass

urlpatterns = [
          re_path(r'edit/(?P<a1>\w+).html',edit),
]

html传参的时候可以写成
<a href="/edit/{{row.id}}.html">编辑</a>
View Code
复制代码

 

3.给某个path命名( 反查出他的url,特有,用来做权限)

复制代码
 1 from django.urls import    reverse
 2 
 3 path('login/',login,name='n1'),
 4 
 5 print(reverse('n1'))
 6  7 /login/
 8 
 9 #---有多个值的话(想让生成的url是什么就能设置成什么)
10 
11  re_path('edit/(?P<a2>\w+)/(?P<a1>\w+).html',edit,name='n2'),
12 
13 def edit(request,a1,a2):
14     print(reverse('n2',kwargs={'a1':11,'a2':22 }))
15 16   /edit/22/11.html
17 
18 #---用处:可以在html改变
19 <td><a href="/edit/">编辑</a></td>-->20 <a href="{% url 'n2'%}">编辑</a>
21 
22 
23 ---传值:  多个用空格隔开就行
24 <td><a href="/edit_student/{{row.id}}">编辑</a></td>
25 <td><a href="{%url 'love' row.id %}">编辑</a></td>
View Code
复制代码

 4.路由分发  (协同开发)

一个项目可以有多个app,每个app是一个业务的模块

复制代码
新建一个目录app01
from django.urls import path

def login(request):
    return HttpResponse('ok app login')
urlpatterns = [
     path('login/',login),
    ]


#


urlpatterns = [
      path('app01/',include('app01.urls')),
]


#

浏览器:http://127.0.0.1:8000/app01/login/

#客户访问这个URL后先转到app01文件夹,然后include找到里面的urls文件,在里面的urlpatterns内再次进行匹配

输出结果:ok app login
View Code
复制代码

 

posted @   磕伴  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示