打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(django)6路由基本使用

路由定义位置

django的路由是定义在 urls.py 文件下的 urlpatterns 列表中的。 urls.py 文件是路由解析的入口。

from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^', views.index, name="index")]

一般每个子应用为了独立,都有自己的 urls.py 来保存该应用的路由,然后使用 include 函数把子路由包含在主路由中。

# 子路由from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^', views.index, name="index")]
# 使用include函数把子路由包含在主路由中from django.conf.urls import url, includefrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^demo/', include("demo.urls"))]

也可以把所有的路由都定义在主路由中,子应用不再设置。

from django.conf.urls import urlfrom django.contrib import adminfrom demo.views import indexurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^demo/', index)]

路由的解析顺序

django的路由解析是从上到下的,django接收到一个请求后,他会从主工程的路由文件中 urls.py下的 urlpatterns 列表从上到下匹配,匹配到一个符合规则的路由,会执行后边的函数。如果后边是 include 函数,则会进入包含的子路由中,从上到下匹配。

如果django匹配到一个符合规则的路由,会立即执行后面的函数,而不会继续向下执行。所以,当上边的匹配规则如果包含了下边的规则,可能会把下边的路由屏蔽掉。

urlpatterns = [    url(r'^say', views.say),    url(r'^sayhello', views.sayhello),]

即使访问 sayhello 路径,他也会进入到 say 函数执行,因为他先匹配成功了 say 的路由规则。

所以定义路由规则描述要准确,或者用 / 结尾。

路由命名

在定义路由的时候,可以指定第三个参数,来为路由起别名

  1. 使用 include 定义的路由时,在 include 函数中使用关键字参数 namespace 定义命名空间
urlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^demo/', include("demo.urls", namespace="demo"))]
- 命名空间的作用:避免不同应用中的路由使用了相同的名字发生冲突,使用命名空间区别开。
  1. 只使用 url 定义路由时,使用关键字参数 name 定义路由名字
urlpatterns = [    url(r'^', views.index, name="index")]

reverse反解析

使用reverse函数,可以根据路由名称,返回具体的路径,如:

from django.core.urlresolvers import reverse  # 注意导包路径def index(request):    return HttpResponse("hello world!")def say(request):    url = reverse('users:index')  # 返回 /users/index/    print(url)    return HttpResponse('say')
  • 对于未指明namespace的,reverse(路由name)

  • 对于指明namespace的,reverse(命名空间namespace:路由name)

来源:http://www.icode9.com/content-4-59501.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Django url管理之include
Django 系列篇(四):路由篇(上)
使用Python Django搭建个人博客系统(完整过程)!
前端教程:DjangoURL映射
(转)Python 网站开发(三)Django 模板的使用-东奎博客
Django 通用视图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服