Django框架入门六__路由分发,反向解析,命名空间,正则路径(无名+有名参数)

本文详细介绍了Django项目中如何通过路由分发提高代码可维护性,包括全局路径分发到APP、APP内部路由规则定义。同时,文章探讨了反向解析在视图和模板中的应用,包括无名参数、有名参数的正则路径,并展示了命名空间如何避免路由别名冲突。此外,还给出了模板中使用反向解析的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 项目目录

这一节我们需要在原有的目录下,创建 models/urls.py ,在各自的APP下完成路由的一些操作
在这里插入图片描述

2. 路由分发

存在问题

Django 项目里多个app目录共用一个 urls 容易造成混淆,后期维护也不方便

解决:

使用路由分发(include),让每个app目录都单独拥有自己的 urls

步骤:

  • 在每个 app 目录里都创建一个 urls.py 文件。
  • 在项目名称目录下的 urls 文件里,统一将路径分发给各个 app 目录

2.1 全局路径分发到APP

在项目的根目录下 myFirstDjango/urls.py中填写路由分发规则

from django.urls import path, include  # 从 django.urls 引入 include

# 此项就是django的url配置
"""
    path('models/', include('models.urls')) include 路由分发
    相当于flask框架的蓝图,把请求分开到不同的app中,方便后期维护
    models/ : 相当于访问项目时根路径下一层的请求名字  http://localhost:8080/models/
              注意必须添加最后的 / 不然路径不通
              
    include('models.urls') : 引入了 models APP中的 urls.py文件,这样的话django框架
                             就知道去哪里找你的映射路径了,浏览器输入http://localhost:8080/models/XXX
                             django就会去 models/urls.oy去找你的下一层请求地址 
    """
urlpatterns = [
    path('models/', include('models.urls'))
]

2.2 APP定义自己的路由转发规则

models/urls.py中写自己APP的路由规则即可

from django.urls import path
# 路由分发就每个模块都引入自己的 urls.py 和 views.py 文件
from models import views  # 在models APP中 引入的 models/views.py

# 此项就是django的url配置
"""
 path('url_include', views.url_include)
 path('url_include' : 这里的 url_include 是第二层路径的名称
 views.url_include) : 第一个参数路径名称指向的视图函数是  views.py/url_include 函数
 
                                    第一层/第二层
 完整路径为 : http://localhost:8080/models/url_include

"""
urlpatterns = [
    path('url_include', views.url_include),
]

models/views.py中添加如下代码

from django.shortcuts import HttpResponse

def url_include(request):
    return HttpResponse("我是models下的urls.py 经过路由分发转发过来的请求视图")

浏览器输入完整路径 http://localhost:8080/models/url_include

在这里插入图片描述

可以看到浏览器路径不是从根路径就下发请求,中间定义了一个models,这就是路由分发,通过不同APP的urls 和 views,可以定义不同的路径分发规则,不再是所有的代码都写在一个文件里了,后期维护非常的方便在这里插入图片描述

3. 反向解析

随着功能的增加,路由层的 url 发生变化,就需要去更改对应的视图层和模板层的 url,非常麻烦,不便维护这时我们可以利用反向解析,当路由层 url 发生改变,在视图层和模板层动态反向解析出更改后的 url,免去修改的操作,反向解析一般用在模板中的超链接及视图中的重定向

3.1 视图反向解析

models/urls.py修改为以下内容

urlpatterns = [
    path('url_include', views.url_include),
    # 添加名称,不管 path的地址怎么变,都能通过 login这个名字反向解析到视图函数中
    path('to_login'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我三胖哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值