共计 1471 个字符,预计需要花费 4 分钟才能阅读完成。
一、概述
-
作用
接收 web 请求并返回 web 响应
-
本质
就是 python 函数
-
请求
客户端给服务端的信息
-
响应
服务端给客户端的信息,可以是一个网页、一个重定向、一个 404 错误、json 数据等
-
图解
二、路由 (URLconf)
1、在配置文件中指定根级路由
ROOT_URLCONF = 'project.urls'
2、path() 函数与 re_path() 函数
-
概述
在新版本 Django2.x 中,url 的路由表示用 path 和 re_path 代替,模块的导入由 django1.x 版本的 from django.conf.urls import url,include 变成现在的 Django2.x 中的 from django.urls import path, re_path, include
-
作用
路由匹配
-
path()
-
参数
route:是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项
view:当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入
name:为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式 (反向解析)
-
注意
route 使用的是非正则表达式可以表示的普通路由路径
-
-
re_path()
参数
- route:使用正则表达式
- view:使用正则表达式
- name:使用正则表达式
-
说明
如果匹配的规则比较复杂建议使用 re_path()
3、在根级路由中指定子路由
-
urlpatterns
一个 path 对象的列表
-
path() 对象的作用
在主路由中主要是引入其他子路由模块
-
基本使用
from django.urls import path, include from django.contrib import admin urlpatterns = [path(r'admin/', admin.site.urls), path(r'', include('App.urls')), ]
-
include() 函数
-
作用:找到子路由模块
-
参数
- 子路由模块路径
- 命名空间:用于反向解析
-
带命名空间
from django.urls import path, include from django.contrib import admin urlpatterns = [path(r'admin/', admin.site.urls), path(r'', include(('App.urls', "App"),namespace="App")), ]
-
-
多个子路由模块
# 假设有多个应用 # http://www.sunck.wang:8000/App/index1 # 匹配 App/index1 App3/home2 # path(r'App/', include('App.urls')), # path(r'App1/', include('App1.urls')), # path(r'App2/', include('App2.urls')), # path(r'App3/', include('App3.urls')),
3、在应用目录下创建名为 urls.py 的文件作为子路由
-
目录结构
project/ App/ urls.py # 自定义 urls.py 文件 project/ urls.py
-
urlpatterns
一个 path 对象的列表
-
path() 对象的作用
根据路由匹配不同的视图
-
导入
from django.urls import path, re_path