博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3开发--24--Django项目的路由设计
阅读量:2035 次
发布时间:2019-04-28

本文共 2795 字,大约阅读时间需要 9 分钟。

如果直接阅读本文,您可能有些不知所云,这是因为我用很多篇幅讲了一个事情,如果想知道上下文,那么建议您从本专栏第21章看起:

一、路由分发规则

在默认情况下,设置路由地址是在项目同名文件夹下的urls.py文件里实现的。但一个项目中可能有多个应用,如果所有应用的路由都在urls.py中定义,当项目规模越来越大的时候,urls.py中定义的路由地址就会越来越多,从而造成难以管理的问题。

为了更好的设计项目的路由地址,我们在shop/urls.py中分别为每个应用定义一个路由入口,即每个应用下创建一个urls.py文件,这样,即将每个应用的路由地址交给应用自己的urls.py来管理。

修改shop/urls.py

from django.conf import settingsfrom django.contrib import adminfrom django.urls import path, re_path, includefrom django.views.static import serveurlpatterns = [	# 设定admin管理系统的路由信息    path('admin/', admin.site.urls),        # 添加应用index、commodity、shopper的urls.py    # namespace是可选参数,是Django设置路由的命名空间    path('', include(('index.urls', 'index'), namespace='index')),    path('commodity', include(('commodity.urls', 'commodity'), namespace='commodity')),    path('shopper', include(('shopper.urls', 'shopper'), namespace='shopper')),        # 配置媒体资源的路由信息    re_path('media/(?P
.*)', serve, {
'document_root':settings.MEDIA_ROOT}, name='media'),]

整个路由设计模式的工作原理如下:

1、当项目运行时,Django从shop/urls.py找到各应用的urls.py,然后读取每个urls.py定义的路由信息,从而生成完整的路由列表。

2、用户在浏览器上访问某个路由地址时,Django会收到该用户的请求信息。

3、Django从当前请求信息中获取路由地址,并在路由列表里匹配相应的路由信息,再执行路由信息所指向的视图函数,从而完成整个请求的响应过程。

二、设置应用路由地址

2.1、路由定义规则

1、每个urls.py文件必须设有一个列表urlpatterns,该列表是用于定义路由的信息。

2、每条路由都是函数path定义,函数path设置了3个参数:第一个参数是设置具体的路由地址。第二个参数是指向应用的views.py的某个视图函数,负责处理路由的业务逻辑。第三个参数是可选参数,用于命名路由地址。

3、如果函数path的第二个参数使用了内置函数include,该路由为路由分发。如果使用了应用的views.py的某个视图函数,则该路由为网站的路由地址。

2.2、定义应用路由

1、创建文件:index/urls.py

from django.urls import pathfrom .views import *urlpatterns = [    # 第一个参数用于设置具体的路由地址,此处设置为空    # 第二个参数是指向index应用的views.py的某个视图函数    # 第三个参数用于命名路由地址,是个可选参数    path('', indexView, name='index'),]

修改文件:index/views.py

# 本节的重点是路由,我们先这样写,内容以后再填充# 如果不写index/urls.py中会因为找不到函数而报错def indexView():    pass

2、创建文件:shopper/urls.py

from django.urls import pathfrom .views import *urlpatterns = [    # 第一个参数用于设置具体的路由地址    # 第二个参数是指向index应用的views.py的某个视图函数    # 第三个参数用于命名路由地址,是个可选参数    path('.html', shopperView, name='shopper'),    path('/login.html', loginView, name='login'),    path('/logout.html', logoutView, name='logout'),    path('/shopcart.html', shopcartView, name='shopcart'),]

修改文件:shopper/views.py

# 本节的重点是路由,我们先这样写,内容以后再填充# 如果不写shopper/urls.py中会因为找不到函数而报错def shopperView():    passdef loginView():    passdef logoutView():    passdef shopcartView():    pass

3、创建文件:commodity/urls.py

from django.urls import pathfrom .views import *urlpatterns = [    # 第一个参数用于设置具体的路由地址    # 第二个参数是指向commodity应用的views.py的某个视图函数    # 第三个参数用于命名路由地址,是个可选参数    path('.html', commodityView, name='commodity'),    # 设置了路由变量id,该变量ID以整数型表示    path('/detail.
.html', detailView, name='detail'),]

修改文件:commodity/views.py

# 本节的重点是路由,我们先这样写,内容以后再填充# 如果不写commodity/urls.py中会因为找不到函数而报错def commodityView():    passdef detailView():    pass

三、总结

看看我们本节所操作的文件在项目中的位置

在这里插入图片描述

转载地址:http://swraf.baihongyu.com/

你可能感兴趣的文章
spring 事务管理
查看>>
WebCollector爬虫的数据持久化
查看>>
Redis技术知识总结之三——Redis数据淘汰机制
查看>>
[初心者适用]如何为代码编写基本的文档
查看>>
DailyScrum beta 第三天!
查看>>
骚博记, 又名: building another twitter
查看>>
Daily scrum beta 第五天!
查看>>
为什么牛逼?——"Stonie is a KungFu monk"游戏精品功能介绍与详细规范,以及其中的挑战...
查看>>
影响未来的应用ifttt,互联网自主神经系统的又一个有力证据
查看>>
IT管理人才必备的十大能力
查看>>
迎接五大趋势 拥抱两个世界
查看>>
[置顶] 电信系统方案 >> 电信Boss系统
查看>>
英特尔诺基亚联手研发Symbian系统的智能手机
查看>>
怎样成为优秀的软件模型设计者?
查看>>
解决spring和struts配合问题
查看>>
嵌入式系统Linux内核开发工程师必须掌握的三十道题
查看>>
产品管理系列(一)---优秀的产品经理所具有的素质
查看>>
架构师之路(5)---IoC框架
查看>>
ExtJS 实现的Web文件管理系统
查看>>
SOA架构师注意的问题
查看>>