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中str.format()详解
Mar 12 Python
Java分治归并排序算法实例详解
Dec 12 Python
Python 2.7中文显示与处理方法
Jul 16 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
pycharm 设置项目的根目录教程
Feb 12 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
Python如何安装第三方模块
May 28 Python
opencv实现图像平移效果
Mar 24 Python
Python实战之实现简易的学生选课系统
May 25 Python
如何在pycharm中快捷安装pip命令(如pygame)
May 31 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导入导出excel实例
2013/10/25 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
php微信公众平台开发类实例
2015/04/01 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
javascript 函数使用说明
2010/04/07 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
化学专业毕业生自荐信
2013/11/15 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
户外婚礼策划方案
2014/02/08 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
三八节活动简报
2015/07/20 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书