一、概述
- 作用 接收web请求并返回web响应
- 本质 就是python函数
- 请求 客户端给服务端的信息
- 响应 服务端给客户端的信息,可以是一个网页、一个重定向、一个404错误、json数据等
- 图解
二、路由(URLconf)
1、在配置文件中指定根级路由
代码语言:javascript复制ROOT_URLCONF = <span class="hljs-string">'project.urls'</span>
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() 对象的作用
在主路由中主要是引入其他子路由模块
基本使用
代码语言:javascript复制<span class="hljs-keyword">from</span> django.urls <span class="hljs-keyword">import</span> path, include
<span class="hljs-keyword">from</span> django.contrib <span class="hljs-keyword">import</span> admin
urlpatterns = [
path(<span class="hljs-string">r'admin/'</span>, admin.site.urls),
path(<span class="hljs-string">r''</span>, include(<span class="hljs-string">'App.urls'</span>)),
]
include()函数
作用:找到子路由模块
参数
- 子路由模块路径
- 命名空间:用于反向解析
带命名空间
代码语言:javascript复制<span class="hljs-keyword">from</span> django.urls <span class="hljs-keyword">import</span> path, include
<span class="hljs-keyword">from</span> django.contrib <span class="hljs-keyword">import</span> admin
urlpatterns = [
path(<span class="hljs-string">r'admin/'</span>, admin.site.urls),
path(<span class="hljs-string">r''</span>, include((<span class="hljs-string">'App.urls'</span>, <span class="hljs-string">"App"</span>),namespace=<span class="hljs-string">"App"</span>)),
]
多个子路由模块
代码语言:javascript复制<span class="hljs-comment"># 假设有多个应用</span>
<span class="hljs-comment"># http://www.sunck.wang:8000/App/index1</span>
<span class="hljs-comment"># 匹配 App/index1 App3/home2</span>
<span class="hljs-comment"># path(r'App/', include('App.urls')),</span>
<span class="hljs-comment"># path(r'App1/', include('App1.urls')),</span>
<span class="hljs-comment"># path(r'App2/', include('App2.urls')),</span>
<span class="hljs-comment"># path(r'App3/', include('App3.urls')),</span>
3、在应用目录下创建名为urls.py的文件作为子路由
目录结构
代码语言:javascript复制project/
App/
urls.py <span class="hljs-comment"># 自定义urls.py文件</span>
project/
urls.py
- urlpatterns 一个path对象的列表
- path()对象的作用 根据路由匹配不同的视图
- 导入
from django.urls import path, re_path