Django视图介绍与路由

2022-09-08 20:53:06 浏览数 (1)

一、概述

  • 作用 接收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

0 人点赞