Django3中的urls.py文件层级规划include的使用

  • Post author:
  • Post category:其他


machine
├── machine
│   ├── asgi.py
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── settings.cpython-36.pyc
│   │   └── urls.cpython-36.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── mainsite
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── 0001_initial.cpython-36.pyc
│   │       └── __init__.cpython-36.pyc
│   ├── models.py
│   ├── templates
│   │   ├── base.html
│   │   ├── footer.html
│   │   ├── header.html
│   │   ├── report.html
│   │   ├── search.html
│   │   └── show.html
│   ├── tests.py
│   ├── urls.py

以上面的文件结构为例,上面的django项目名称为:machine,machine文件夹下面有两个文件夹:machine文件夹是整个项目的主文件夹,和项目同名,mainsite是一个Django3的app(应用)。

朱文件夹中有一个urls.py文件,是整个项目的入口文件模板,所有的访问首先会依次匹配这个文件中定义的路径。

我们如果有很多个app,不可能把所有app的众多路径都写在这个主文件夹的urls.py里面,这样太多也不便于管理。于是我们在主urls.py文件里面只写到各个app中urls.py文件的引用,每个app再单独写自己的urls.py。

主urls.py文件内容:

from django.contrib import admin
from django.urls import path, include, re_path
from mainsite import views as mainsite

urlpatterns = [
    path('admin/', admin.site.urls),
    path('search/', include('mainsite.urls')),
    path('universe/', include('universe.urls')),

这里有几个地方要注意:

1、一定要导入include

from django.urls import path, include, re_path

2、

include的使用方式,是项目别名.urls,别名已经在上面引用的时候定义,可以和项目同名

path('search/', include('mainsite.urls')),

3、path的第一个参数可以任意制定,不需要和app同名

4、如果第一个参数不以 / 结尾,那么这里的路径会和app中的路径无间隔的拼接在一起

5、如果path的第一个单数为’’,即为空,那么include进来的app中的路径即为域名后的第一级路径



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