Django视图介绍与路由
阅读 (156482)一、概述
-
作用
接收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