设置路由分发

  • Post author:
  • Post category:其他


一个完整的路由包含:路由地址、视图函数(或者视图类)、路由变量和路由命名。其中基本的信息必须有:路由地址和视图函数(或者视图类),路由地址即我们常说的网址;视图函数(或者视图类)即项目应用(App)的views.py文件所定义的函数或类;路由变量和路由命名是由路由的变量和命名设置,使路由具有动态变化和命名引用功能。(动态变化是指一个路由地址按照某个规律演变多种不同的路由地址;命名引用是指在视图、模型等其他项目文件使用路由命名生成相应的路由地址)

默认情况下,设置路由地址是在项目同名的文件夹的urls.py文件里实现,这也是由setting.py的ROOT_URLCONF决定,以项目babies为例,如图1-2-1.

图1 -2-1

一个项目中可能有多个项目应用(App),而babies文件夹的urls.py是定义项目所有路由地址的总入口,如果项目中所有路由地址都在babies文件夹的urls.py中定义,当项目功能规模越来越大的时候,babies文件夹的urls.py定义 的路由地址就会越来越多,从而造成难以管理的问题。

为了更好的区分各个项目应用(App)的路由地址,我们在babies文件夹的urls.py中分别为每个项目应用(App)定义一条路由入口。首先在每个项目应用(App)的文件夹里创建urls.py文件,以项目babies的项目应用index为例,其目录结构如图1-2-2

图1-2-2

除了项目应用index之外,我们还需要在其他 应用中分别 创建新的urls.py文件。然后在PyCharm里打开babies文件夹的urs.py文件,将项目应用index、shopper和commodity新建的urls.py添加到babies文件夹的urls,py,添加方法由Django内置函数path和include实现,详细代码如下:

#babies文件夹的urls.py
from django.contrib import admin
from django.urls import path, include, re_path
from django.conf import settings
from django.views.static import serve

urlpatterns = [
    path('admin/', admin.site.urls),
#添加项目应用index、commodity和shopper的子路由(urls.py)
    path('index', 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<path>.*)',serve,{'document_root':settings.MEDIA_ROOT},name='media')
]



版权声明:本文为TOPanimals原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。