Django05_反向解析

Django05_反向解析


5.1 反向解析概述

随着功能的不断扩展,路由层的 url 发生变化,就需要去更改对应的视图层和模板层的 url,非常麻烦,不便维护。这个时候我们可以通过反向解析,将 url解析成对应的 试图函数

通过 path或re_path 中 的name属性进行解析
反向解析一般用在模板中的超链接及视图中的重定向

在之前内容中,如果需要在后台中去获取某个url地址的话是需要我们自己进行设置的:

def login(request):# 获取get请求参数用这个# name = request.GET.get('name')# pwd = request.GET.get('pwd')# print(name, pwd)# 获取post请求参数用这个name = request.POST.get('name')pwd = request.POST.get('pwd')print(name, pwd)if name == '张三' and pwd == '1234':return redirect('/app01/index/')  # 重定向return render(request, 'login.html')

对于这部分重新跳转的代码: return redirect('/app01/index/') # 重定向,如果项目逐渐变大,那么这样就不太方便了(需要去记住很多的跳转路径,可能会出现了问题不好找到)
所以我们可以在一开始就为这些url起一个别名,在下次需要使用这个url的时候,可以直接使用这个变量名就可以了
image-20230729015500148

在路由分发的时候,加上一个name参数
可以在需要使用的时候直接通过name来使用这个url

例:我们需要在后端中来使用这个login_tz地址:

def login(request):name = request.POST.get('name')pwd = request.POST.get('pwd')print(name, pwd)if name == '张三' and pwd == '1234':# 在后端中反向解析 url 地址print(reverse('login_tz'))login_path = reverse('login_tz')# return redirect('/app01/index/')  # 重定向return redirect(login_path)  # 重定向return render(request, 'login.html')

image-20230729015546450
跳转成功
image-20230729015526158
例:在前端中去使用

<form action="{% url 'login' %}" method="post">...
</form>

{% url 'login' %}是Django的模板标签,用于反向解析的固定写法,在之后会讲到

5.2 命名空间

如果我存在多个app子应用,那么可以不存在两个一样的url别名?

是可以的,比如:qq、微信等登陆

如果都需要使用login来进行命名,又是怎样来说区分出别名到底对应了哪一个app?

这里就需要用到命名空间,主要是配合url反向解析使用,多个不同的urls文件中配置同名的 name,
为了进行区分,给不同的urls进行不同的命名namespace(可以认为为app又起一个别名)
切记同一个项目下命名空间不能重复!

写法如下:

注意:

  1. 这里的写法include('app01.urls', 'app01')一定一定不要写错了
  2. include里面有一个元组,元组里面依此填内容
  3. 第1个参数'app01.urls'是app下面url地址
  4. 第2个参数'app01'就是我们为app01这个子应用起的别名(namespace)

!!需要注意在使用 include路由分发的时候,如果在子应用使用了反向解析,那么 include路由分发时写法如下:

image-20230731022943133

后端取值:

def login(request):name = request.POST.get('name')pwd = request.POST.get('pwd')print(name, pwd)if name == '张三' and pwd == '1234':print(reverse('app01:login_tz'))login_path = reverse('app01:login_tz')return redirect(login_path)  # 重定向return render(request, 'login.html')
  1. 有include的反向解析,需要加上app别名
  2. 格式:namesapce:name

前端取值(和后端一样):

<form action="{% url 'app01:login_tz' %}" method="post">...
</form>

拓展——反向解析时包含正则匹配

如果在反向解析的时候,遇到的是含正则表达式的有分组匹配的
需要为你的reverse多传一个参数

# 无名分组用 args
print(reverse('login_tz', args=(12,)))# 有名分组用 kwargs
print(reverse('login_tz', kwargs={'y': 112}))

在前端中,也是这样进行操作,不过不用区分无名分组与有名分组

<form action="{% url 'login_tz' 12 %}" method="post">...
</form>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131619.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HTML5高级第二篇】WebWorker多线程、EventSource事件推送、History历史操作

文章目录 一、多线程1.1 概述1.2 体会多线程1.3 多线程中数据传递和接收 二、事件推送2.1 概述2.2 onmessage 事件 三、history 一、多线程 1.1 概述 前端JS默认按照单线程去执行&#xff0c;一段时间内只能执行一件事情。举个栗子&#xff1a;比方说古代攻城游戏&#xff0c…

<C++>类和对象-中

目录 前言 一、类的6个默认成员函数 二、构造函数 2.1 概念 2.2 特性 三、析构函数 1. 概念 2. 特性 四、拷贝构造函数 1. 概念 2. 特征 五、赋值运算符重载 1. 运算符重载 2. 赋值运算符重载 六、实现一个完整的日期类 Date.h Date.cpp 总结 前言 上一节&#xff0c;我们…

C++面试/笔试准备,资料汇总

文章目录 后端太卷&#xff0c;建议往嵌入式&#xff0c;qt&#xff0c;测试&#xff0c;音视频&#xff0c;C一些细分领域投简历。有任何疑问评论区聊&#xff0c;我看到了回复 C面试/笔试准备&#xff0c;资料汇总自我介绍项目实习尽可能有1.编程语言&#xff1a;一.熟悉C语言…

Linux学习笔记-Ubuntu系统用户、群组、权限管理

一、概述 本文记录Ubuntu系统下通过命令操作用户账户进行管理。 Ubuntu系统版本&#xff1a; Linux ubuntu 5.15.0-1034-raspi #37-Ubuntu SMP PREEMPT Mon Jul 17 10:02:14 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux 注&#xff1a;查看系统版本号的指令如下 uname -…

PTA作业笔记——简单的计算

PTA作业笔记——简单的计算 7-10 整数算术运算7-11 猫是液体7-11 猫是液体7-13 计算4个整数的平均值7-14 公元前后日期格式化7-15 A除以B7-18 出租车计价 7-10 整数算术运算 本题要求编写程序&#xff0c;计算并输出2个正整数的和、差、积、商与余数。题目保证输入和输出全部在…

过拟合和欠拟合:机器学习模型中的两个重要概念

文章目录 &#x1f34b;引言&#x1f34b;过拟合和欠拟合的概念&#x1f34b;过拟合和欠拟合的影响与危害&#x1f34b;过拟合和欠拟合的原因与解决方法&#x1f34b;过拟合和欠拟合的研究现状与发展趋势&#x1f34b;过拟合&欠拟合---案例&#x1f34b;总结 &#x1f34b;…

【基本数据结构 三】线性数据结构:栈

学习了数组和链表后,再来看看第三种线性表结构,也就是栈,栈和后边讲的队列一样是一种受限的线性表结构,正是因为其使用有限制,所以对于一些特定的需要操作可控的场合,受限的结构就非常有用。 栈的定义 我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也…

Python 图形化界面基础篇:使用网格布局( Grid Layout )排列元素

Python 图形化界面基础篇&#xff1a;使用网格布局&#xff08; Grid Layout &#xff09;排列元素 引言什么是 Tkinter 的网格布局&#xff1f;步骤1&#xff1a;导入 Tkinter 模块步骤2&#xff1a;创建 Tkinter 窗口步骤3&#xff1a;创建网格步骤4&#xff1a;将元素放置在…

【学习笔记】元学习如何解决计算机视觉少样本学习的问题?

目录 1 计算机视觉少样本学习 2 元学习 3 寻找最优初始参数值方法&#xff1a;MAML 3.1 算法步骤 3.2 代码&#xff1a;使用MAML 和 FO-MAML、任务增强完成Few-shot Classification 4 距离度量方法&#xff1a;Siamese Network,ProtoNet,RN 4.1 孪生网络&#xff08;Sia…

软件测试7大误区

随着软件测试对提高软件质量重要性的不断提高&#xff0c;软件测试也不断受到重视。但是&#xff0c;国内软件测试过程的不规范&#xff0c;重视开发和轻视测试的现象依旧存在。因此&#xff0c;对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识&#xf…

驱动开发,stm32mp157a开发板的led灯控制实验(再优化),使用ioctl函数,通过字符设备驱动分步注册方式编写LED驱动,完成设备文件和设备的绑定

1.实验目的 编写LED灯的驱动&#xff0c;在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制&#xff1b; 2. LED灯相关寄存器分析 LED1->PE10 LED1亮灭&#xff1a; RCC寄存器[4]->1 0X50000A28 GPIOE_MODER[21:20]->01 (输出) 0X50006000 GPIOE_ODR[10]-&…

024 - STM32学习笔记 - 液晶屏控制(一) - LTDC与DMA2D初始

024- STM32学习笔记 - LTDC控制液晶屏 在学习如何控制液晶屏之前&#xff0c;先了解一下显示屏的分类&#xff0c;按照目前市场上存在的各种屏幕材质&#xff0c;主要分为CRT阴极射线管显示屏、LCD液晶显示屏、LED显示屏、OLED显示屏&#xff0c;在F429的开发板上&#xff0c;…

Linux HTTP协议

目录 1.浏览器与服务器通信过程2.HTTP请求报头&#xff08;1&#xff09;HTTP的请求报头结构&#xff08;2&#xff09;HTTP的请求方法 3.HTTP应答报头&#xff08;1&#xff09;HTTP的应答报头结构&#xff08;2&#xff09; HTTP的应答状态 1.浏览器与服务器通信过程 浏览器…

Unity3D之动态生成指定数量带间隔的地面

文章目录 准备代码实现实现效果 准备 空物体生成脚本地面预制体 代码实现 using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; using UnityEngine;public class CreateGround : MonoBehaviour {[SerializeField]public i…

Java版的数据结构——栈和队列

目录 1. 栈&#xff08;Stack&#xff09; 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.4.1 改变元素的序列 1.4.2 将递归转化为循环 2. 队列&#xff08;Queue&#xff09; 2.1 概念 2.2 队列的使用 2.3 队列模拟实现 2.4 循环队列 3. 双端队列&…

Navicat15 /16 已连接数据库密码解密

前言 相信你会遇到使用navicat忘记已连接数据密码的问题吧&#xff01;实在是&#xff0c;密码太多容易忘记&#xff01;&#xff01;&#xff01; 感谢大佬as_dmy的文章如何查看navicat已连接数据库密码&#xff0c;然后才有了此文&#xff01; 1.0版本需要手动查看导出的co…

垃圾收集算法

1.如何判断对象是否存活&#xff1f; 1.1引用计数算法 基本思路&#xff1a; 在对象中添加一个引用计数器每当有一个地方引用它的时候&#xff0c;计数器就加1每当有一个引用失效的时候&#xff0c;计数器就减-1当计数器的值为0的时候&#xff0c;那么该对象就是可被GC回收的…

vue基础知识八:为什么data属性是一个函数而不是一个对象?

一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象&#xff0c;也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:"foo"},// 函数格式data(){return {foo:"foo"}} })组件中定义data属性&#xff…

网站文章生成技术-网站文章生成工具免费

大家好&#xff0c;今天我想和大家分享一些关于网站文章生成的疑虑和期待。作为一个常常需要在网站上发布文章的人&#xff0c;我对这项技术的发展充满了好奇和担忧。在这篇文章中&#xff0c;我将坦率地表达我的想法&#xff0c;希望能引发一些思考。 让我谈一谈我的疑虑。网站…

基于SSM的农产品仓库管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…