Django的URL分发

Django的URL分发

URL:统一资源定位符,是互联网资源的网络地址,简称网址,在互联网中,每一个文件都有着唯一的地址。

一般格式为协议://域名:端口号/路径/文件名.
每当在浏览器的网址栏中输入网址时,浏览器就会使用这个地址,进行寻找,并把地址中包含的信息返回到客户端
。 但因为URL所指向的就是网络资源,会直接暴露的真实的资源位置,增减了危险因素。

    在Django中,提供了非常灵活的URL分发机制,允许用户使用任意格式的URL“路径/文件名“部分。
Django的URL与文件的实际位置无关,格式灵活。
因为一些Django项目拥有多个页面,这样就会导致urls文件的”笨重“,为了解决这个问题,Django有着
非常便利的URL分发技术。

Django的URL分发原理

在任何一个Django项目中,都有着一个根目录,其中就包含着Django项目的基本配置,其中就包括着URL的指向
setting.py文件中,ROOT_URLCONF参数就代表着Django项目的根URL配置模块,负责着整个项目的URL解析。
默认ROOT_URLCONF = '项目名.urls'
qZwT0J.png
在urls.py文件中,又有urlpatterns的参数,其中就包含着URL模式列表,Django会
按照顺序进行匹配,直到匹配到对应的URL,接着Django就会调用匹配到的URL所映射的视图函数,将函数返回值呈现给前端。
qZsaM6.png
若在URL列表中并没有匹配成功或者位置有问题,Django就会自动调用错误处理视图。
Django在执行URL分发操作时,首先加载的是根URL配置模块,不会直接访问应用的urls.py文件,所以在实际项目中,在根urls.py文件中需要加载应用的urls.py文件,
一般会使用include()函数将应用的urls.py文件加载到根urls.py文件中。

值得注意的是,在使用指令创建一个应用时,Django并不会自动的创建一个urls文件,需要手动创建。
根urls文件

from django.urls. import path, include
...

urlpatterns = [
    path('root/', include(应用.urls)),
    ...
]

应用urls文件

from django.urls. import path
...

urlpatterns = [
    path('index/', 视图函数),
    ...
]

首先会在根urls文件下查找对应URL,当匹配到”root/“就会通过include()
将匹配条件发送到应用urls文件中继续匹配 ”index/“

URL的反向解析

反向解析URL指通过URL模式的名称或视图函数名称,来获得视图函数的URL。

  • django.urls.reverse()函数用于获取反向解析URL。

在视图文件中设计一个index()函数,用来反向解析URL,urls文件中使用reverse()函数进行反向解析URL。
views文件

from django.urls import reverse
def index(request):
    return HttpResponse("请求的URL路径为:%s" % reverse("urlNoPara"))

urls文件

from django.urls import path
...
urlpatterns = [
    ...
    path('index/', itemPoolView.index, name="urlNoPara"),
]

则访问index/时,就会对应到index视图函数,并返URL。

qZ4QpD.png

Django的URL分发机制将用户访问的URL与实现输出页面的视图函数、模板、模型等隔离,
也在一定程度上保障了站点安全。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值