https://docs.djangoproject.com/zh-hans/3.2/topics/http/urls/

urls.py被称为URLConf
image.png

主路由模块管理并分配不同模块的请求路径给子路由,子路由模块将不同业务的请求路由分配到不同的视图处理组件。

1)启动项目后,Django项目会加载配置文件settings.py中的路由配置选项ROOT_URLCONF来定位主路由模块。
2)接收用户传入的请求对象HttpRequest,在请求对象中拆分URL得到访问路径,在主路由模块中查找变量urlpatterns
3)Django按照主路由、子路由的匹配方式进行路径的匹配,并且在匹配到第一个成功的映射关系后,调用执行该映射关系指定的视图处理组件。
4)匹配失败或者异常时,调用错误处理视图给用户。

MyDjango
> MyDjango
> urls.py
> settings.py
> news
> views.py
> urls.py
> manage.py

MyDjango>MyDjango>settings.py
image.png
MyDjango>MyDjango>urls.py

  1. from django.urls import path,include
  2. urlpatterns = [
  3. path('news', include('news.urls'))
  4. ]

MyDjango>news>urls.py

  1. from django.urls import path
  2. from . import views
  3. urlpatterns = [
  4. path('hello', views.index, name='news')
  5. ]

MyDjango>news>views.py

  1. from django.http import HttpResponse
  2. def index(request):
  3. return HttpResponse('HelloNews')

运行

  1. python3 manager.py runserver 8080

image.png

函数 include() 允许引用其它 URLconfs。每当 Django 遇到 include() 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。

path函数
两个必须参数:route 和 view,两个可选参数:kwargs 和 name。

route参数
route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/。

view参数
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。稍后,我们会给出一个例子。

kwargs参数
任意个关键字参数可以作为一个字典传递给目标视图函数。本教程中不会使用这一特性。

name参数
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。

为URL名称使用命名空间

MyDjango>news>urls.py 加上app_name设置命名空间
image.png
在模板中使用url时,显示指定具有命名空间的详细视图
image.png