前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django视图介绍与路由

Django视图介绍与路由

作者头像
星哥玩云
发布2022-09-08 20:53:06
4750
发布2022-09-08 20:53:06
举报
文章被收录于专栏:开源部署开源部署

一、概述

  • 作用 接收web请求并返回web响应
  • 本质 就是python函数
  • 请求 客户端给服务端的信息
  • 响应 服务端给客户端的信息,可以是一个网页、一个重定向、一个404错误、json数据等
  • 图解
image20200103104904884.png
image20200103104904884.png

二、路由(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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、路由(URLconf)
    • 1、在配置文件中指定根级路由
      • 2、path()函数与re_path()函数
        • 3、在根级路由中指定子路由
          • 3、在应用目录下创建名为urls.py的文件作为子路由
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档