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 版权协议,转载请附上原文出处链接和本声明。