Django命名URL和反向解析URL实现解析


Posted in Python onAugust 09, 2019

命名 URL:

test.html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>测试页面</title>
</head>
<body>
<p>测试页面</p>
<form action="/test/" method="post">
 <input type="text" name="username" value="">
 <input type="submit" name="提交">
</form>
<a href="/json_test/" rel="external nofollow" >json 数据</a> 
</body>
</html>

urls.py:

from django.conf.urls import url
from app01 import views
urlpatterns = [
 url(r'^test/', views.test),
 url(r'^json_test/', views.json_test),
]

如果 urls.py 中的 json_test/ 路径发生改变,test.html 中的地址也要改

可以使用反向 url 解析,给 json_test/ 起一个别名

urls.py:

from django.conf.urls import url
from app01 import views
urlpatterns = [
 url(r'^test/', views.test),
 url(r'^json_test/', views.json_test, name="json"), # 给该 url 匹配命名为 json
]

test.html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>测试页面</title>
</head>
<body> 
<p>测试页面</p> 
<form action="/test/" method="post">
 <input type="text" name="username" value="">
 <input type="submit" name="提交">
</form> 
<a href="{% url 'json' %}" rel="external nofollow" >json 数据</a> 
</body>
</html>

这时候如果修改 urls.py 中的 json_test/ 路径,就不需要再去修改 test.html

反向解析 URL:

如果需要重定向这样的路径的话,可以在 views.py 中这样写:

from django.shortcuts import render, redirect
from django.urls import reverse 
# json 测试
def json_test(request):
 hobby = ["Music", "Movie", "Basketball", "Reading"]
 from django.http import HttpResponse, JsonResponse
 return JsonResponse(hobby, safe=False) 
def test(request):
 return redirect(reverse("json")) # 通过 json 反向得到路径 json_test/

访问:http://127.0.0.1:8000/test/ 就变成访问:http://127.0.0.1:8000/json_test/

如果 url 需要传参数的话:

urls.py:

from django.conf.urls import url
from app01 import views
urlpatterns = [
 url(r'^test/', views.test),
 url(r'^json_test/(?P<id>[0-9]{2,4})/(?P<title>[a-zA-Z]+)/', views.json_test, name="json"),
]

test.html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>测试页面</title>
</head>
<body>
<p>测试页面</p>
<form action="/test/" method="post">
 <input type="text" name="username" value="">
 <input type="submit" name="提交">
</form>
<a href="{% url 'json' 12 'abcd' %}" rel="external nofollow" >json 数据</a>
</body>
</html>

访问:http://127.0.0.1:8000/test/

Django命名URL和反向解析URL实现解析

点击 “json 数据”

Django命名URL和反向解析URL实现解析

反向解析需要参数的话:

urls.py:

from django.conf.urls import url, include
from app01 import views
urlpatterns = [
 url(r'^test/', views.test),
 url(r'^json_test/(?P<id>[0-9]{2,4})/(?P<title>[a-zA-Z]+)/', views.json_test, name="json"),
]

views.py:

from django.shortcuts import HttpResponse, redirect
from django.urls import reverse 
def json_test(request, id, title):
 print("id: ", id)
 print("title: ", title)
 return HttpResponse(id+"----"+title) 
def test(request):
 return redirect(reverse("json", kwargs={"id": 23, "title": "aaaa"}))

访问:http://127.0.0.1:8000/test/

Django命名URL和反向解析URL实现解析

跳转到了:http://127.0.0.1:8000/json_test/23/aaaa/

Django命名URL和反向解析URL实现解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用mongoengine操作MongoDB教程
Apr 24 Python
Python随手笔记第一篇(2)之初识列表和元组
Jan 23 Python
pandas 数据实现行间计算的方法
Jun 08 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
一文了解Python并发编程的工程实现方法
May 31 Python
python plotly绘制直方图实例详解
Jul 22 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
Pycharm快捷键配置详细整理
Oct 13 Python
用python修改excel表某一列内容的操作方法
Jun 11 Python
利用python list完成最简单的DB连接池方法
Aug 09 #Python
python使用requests.session模拟登录
Aug 09 #Python
如何在Cloud Studio上执行Python代码?
Aug 09 #Python
python切片(获取一个子列表(数组))详解
Aug 09 #Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 #Python
一行python实现树形结构的方法
Aug 09 #Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 #Python
You might like
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
js尾调用优化的实现
2019/05/23 Javascript
了解JavaScript中的选择器
2019/05/24 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
python网络编程之多线程同时接受和发送
2019/09/03 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
yy结婚证婚词
2014/01/10 职场文书
中国央视网签名寄语
2014/01/18 职场文书
业务总经理岗位职责
2014/02/03 职场文书
2014春晚主持词
2014/03/25 职场文书
产品包装策划方案
2014/05/18 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python