Backend - Django URL 路由 & 重定向 & url编码解码

目录

[一、url 的 <> 作用](#一、url 的 <> 作用)

(一)操作流程

(二)前端设置链接

[1. 包括:](#1. 包括:)

[2. 比如](#2. 比如)

(三)后端匹配路由

[1. 理解](#1. 理解)

[2. 比如](#2. 比如)

[(三)后端视图的 get( )的参数](#(三)后端视图的 get( )的参数)

[1. 理解](#1. 理解)

[2. 比如](#2. 比如)

[二、路由重定向 HttpResponseRedirect](#二、路由重定向 HttpResponseRedirect)

(一)重定向到当前操作界面(刷新该界面)

(二)重定向到指定界面

(三)重定向时,带参数

[1. 指定跳转时](#1. 指定跳转时)

[2. 获取时](#2. 获取时)

三、重定向前,获取操作页面的路由

[四、URL编码与解码,即quote() & unquote()](#四、URL编码与解码,即quote() & unquote())

[(一)quote( ) 对路由url编码](#(一)quote( ) 对路由url编码)

[1. 写法](#1. 写法)

[2. 作用](#2. 作用)

[(二)unquote( ) 对路由url解码](#(二)unquote( ) 对路由url解码)

[1. 写法](#1. 写法)

[2. 作用](#2. 作用)


一、url 的 <> 作用

(一)操作流程

前端界面templates点击链接跳转 > url路由 > views的kwargs

(二)前端设置链接

1. 包括:

ajax的url值;select的option的value值;a标签的href值等

2. 比如

html 复制代码
<a href='/url_lang/zh-hans/luobogan'></a>

(三)后端匹配路由

python 复制代码
path('url_lang/<language>/<user>/', views_base.SetLang.as_view(), name='url_set_lang'),

1. 理解

其中,< > 包裹的内容理解成一个字典的key,key对应的value是前端链接设定的值。

2. 比如

'language' 的值对应 'zh-hans', 'user' 的值对应 'luobogan' 。

(三)后端视图的 get( )的参数

python 复制代码
class SetLang(View): 
        def get(self, request, *args, **kwargs):

1. 理解

其中,第四个参数 **kwargs 的字典内容,是路由url中获取的(第二点中有提到)。

2. 比如

kwargs 的值就是字典 {'language': 'zh-hans', 'user': 'luobogan'}

二、路由重定向 HttpResponseRedirect

(一)重定向到当前操作界面(刷新该界面)

python 复制代码
from urllib.parse import unquote

nexturl = request.META.get('HTTP_REFERER')
nexturl = nexturl and unquote(nexturl)
return HttpResponseRedirect(nexturl)

(二)重定向到指定界面

python 复制代码
return HttpResponseRedirect('/url_set_lang/')

(三)重定向时,带参数

1. 指定跳转时

python 复制代码
return HttpResponseRedirect('/url_set_lang/?user_id={}&book_id={}'.format('luobo', '数据结构'))

2. 获取时

python 复制代码
request.GET.get('user_id')

三、重定向前,获取操作页面的路由

python 复制代码
request.META.get('HTTP_REFERER')   # 针对Django

理解:

当页面A跳转到页面B时,若 http 请求头包含 referer 字段,则该字段值就是页面A的 url 。

注意:

由于不同浏览器的特点,HTTP_REFERER可能会不存在。即,若要使用HTTP_REFERER,需先检查是否存在。

四、URL编码与解码,即quote() & unquote()

(一)quote( ) 对路由url编码

1. 写法

python 复制代码
from urllib.parse import quote
quote('这是一个字符串')

2. 作用

避免中文乱码。

(二)unquote( ) 对路由url解码

1. 写法

python 复制代码
from urllib.parse import unquote
unquote(my_url)

2. 作用

unquote( )方法能把 URL编码形式的字串,解码成原来的字串。

相关推荐
程序员清风19 分钟前
贝壳一面:年轻代回收频率太高,如何定位?
java·后端·面试
摆烂z29 分钟前
Jupyter Notebook的交互式开发环境方便py开发
ide·python·jupyter
考虑考虑31 分钟前
Java实现字节转bcd编码
java·后端·java ee
AAA修煤气灶刘哥1 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督1 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
星辰大海的精灵2 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师2 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥2 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM972 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端
三十_2 小时前
【NestJS】构建可复用的数据存储模块 - 动态模块
前端·后端·nestjs