Django-urls解析--视图层
当一个Django项目创建完毕后, 项目下会有以下几个文件:
- 外部根目录是项目的容器。它的名字对Django来说并不重要;您可以将其重命名为您喜欢的任何内容。
mysite/
manage.py
:一个命令行实用程序,允许您以各种方式与此Django项目进行交互。您可以在django-admin和 manage.py 中阅读有关的所有详细信息。manage.py
- 内部目录是项目的实际 Python 包。它的名称是Python包名称,您需要使用它来导入其中的任何内容(例如)。
mysite/
mysite.urls
mysite/__init__.py
:一个空文件,告诉 Python 此目录应被视为 Python 包。如果您是Python初学者,请在官方Python文档中阅读有关包的更多信息。mysite/settings.py
:此 Django 项目的设置/配置。Django设置将告诉您有关设置如何工作的所有信息。mysite/urls.py
:此 Django 项目的 URL 声明;Django驱动的网站的“目录”。您可以在 URL 分派器中阅读有关 URL 的详细信息。mysite/asgi.py
:ASGI兼容Web服务器的入口点,为您的项目提供服务。有关更多详细信息,请参阅如何使用 ASGI 进行部署。mysite/wsgi.py
:与 WSGI 兼容的 Web 服务器的入口点,用于为您的项目提供服务。有关更多详细信息,请参阅如何使用 WSGI 进行部署。
一:django的urls.py
- 项目url的入口是在项目的setting.py中定义的
- 找到项目的setting.py中的 ROOT_URLCONF
- 例如我的项目是book那么在setting.py显示的就是
-
-
- url定义了所有请求地址,前端请求地址经过分发都会经过urls转发到对应的视图
1.1:配置URLconf
查找视图的过程 :
- 1.请求者在浏览器地址栏中输入URL, 请求到网站.
- 2.网站获取URL信息.
- 3.然后与编写好的URLconf逐条匹配.
- 4.如果匹配成功则调用对应的视图.
-
5.如果所有的URLconf都没有匹配成功.则返回404错误.
-
-
URLconf
入口 -
-
需要两步完成
URLconf
配置- 1.在
项目
中定义URLconf
- 2.在
应用
中定义URLconf
- 1.在
-
在
项目
中定义URLconf
- 111
- 11
1.2、urls.py解析
1.urlpatterns 是固定写法. 它的值是 列表 2.我们在浏览器中输入的路径和会 urlpatterns中的每一项顺序进行匹配 如果匹配成功,则直接引导到相应的模块. 如果匹配不成功(把urlpatterns中的每一个都匹配过了),则直接返回404. 3.urlpatterns中的元素 是 url url的第一个参数是: 正则 r 转义 ^ 严格的开始 $ 严格的结尾 4.我们在浏览器中输入的路由 中 哪些部分参与正则匹配? http://ip:port/path/?key=value 我们的http://ip:port/ 和 get post 参数不参与正则匹配 5. 如果和当前的某一项匹配成功,则引导到子应用中继续匹配 如果匹配成功,则停止匹配返回相应的视图 如果匹配不成功,则继承和后边的工程中的url的每一项继续匹配,直到匹配每一项,
1.3、项目使用include分发url
在项目中建议讲每个app对应的url经过项目的urls.py 分发到对应的子应用
如下:
项目: book
子应用:bookmanage
1、在子应用boomanage中简历一个urls.py
2、在项目book的url.py中讲子应用bookmanage的url分发到bookmanage的urls.py
- 1.子应用新建的urls.py
-
from django.urls import path, re_path from . import views urlpatterns = [ path('index', views.index, name='index'), # 分发到对应的views视图中的index方法 ]
-
- 项目book/urls.py
-
from django.contrib import admin from django.urls import path, include # 导入include包用于分发urls import bookmanage.views urlpatterns = [ path('admin/', admin.site.urls), path('bookmanage/', include('bookmanage.urls')), ]
-
include()
函数允许引用其他 URLCONFS。每当 Django 遇到include()
时,它就会砍掉与该点匹配的 URL 的任何部分,并将剩余的字符串发送到包含的 URLconf 进行进一步处理。
-
url匹配过程
.