前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django路由(urls.py)

Django路由(urls.py)

作者头像
zy010101
发布2021-10-09 11:53:31
4180
发布2021-10-09 11:53:31
举报
文章被收录于专栏:程序员

Django路由(urls.py)

路由控制着视图函数的调用。即发起的请求所包含的路由就对应着Django会调用该路由所对应的视图函数。所以,综合来看,在Django中的视图+路由才应该是等价于MVC模式中的C。视图函数确实完成了业务逻辑,但是还差了一个步骤,那就是如何调用这个视图函数,这就是路由的作用。通过路由,Django将不同的路由和不同的视图函数对应起来。这样就可以根据请求中的路由来调用相应的视图函数完成业务逻辑的处理。

书写路由

一般而言,我们会在每一个APP下面新建一个urls.py文件用来存放这个APP的所有路由,然后在项目的urls.py中包含每一个APP的路由文件即可。例如:

代码语言:javascript
复制
# book APP的urls.py
from django.urls import path
from book.views import index

# urlpatterns是固定写法
urlpatterns = [
    path('index', index),   # path第一个参数是路由,第二个参数是视图函数名称
]
代码语言:javascript
复制
# 项目的urls.py
from django.urls import path, include   # 导入include方法

urlpatterns = [
    # path('admin/', admin.site.urls),      # 我们不使用Django自带的后台管理,注释掉路由即可。

    path('book/', include('book.urls')),     # path第一个参数是父路由,第二个参数是子路由
]

这样设置之后,我们访问的路由就是/book/index。如下所示:

在这里插入图片描述
在这里插入图片描述

注意,我们这时候访问一个不存在的url地址(例如:http://127.0.0.1:8000/bxsa),在Django的Debug模式下会给出如下的提示:

在这里插入图片描述
在这里插入图片描述

这时候Django给出的路由是book/,而不是book/index,当我们访问http://127.0.0.1:8000/book/时,才会给出如下提示。

在这里插入图片描述
在这里插入图片描述

这种方式确实更好的体现了模块化的思想,首页只告诉你主路由是什么,当你访问了主路由之后,如果子路由不正确,才会给你提示子路由。


相对简单的路由书写方式

如果你嫌弃这种方式比较麻烦,那么也可以在项目的urls.py中按照如下的方式书写路由。

代码语言:javascript
复制
path('', include('book.urls')),

这样,将会在主页提示你所有的路由,这种方式更加方便。只不过你可能需要在APP的urls.py文件中书写多层次的路由。例如:

代码语言:javascript
复制
urlpatterns = [
    # path('index', index),   # path第一个参数是路由,第二个参数是视图函数名称
    path('book/index', index),		# 新的路由
]

这样书写路由之后,再次访问http://127.0.0.1:8000/之后,将会直接提示你目前所有的路由。例如:

在这里插入图片描述
在这里插入图片描述

我个人偏向于第二种方式书写路由。


其他注意点

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django路由(urls.py)
    • 书写路由
      • 相对简单的路由书写方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档