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类继承用法实例分析
Oct 10 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
python如何查看系统网络流量的信息
Sep 12 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Selenium定位元素操作示例
Aug 10 Python
python random从集合中随机选择元素的方法
Jan 23 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
python unichr函数知识点总结
Dec 16 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
如何使用python包中的sched事件调度器
Apr 30 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 中英文语言转换类代码
2011/08/11 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
php socket客户端及服务器端应用实例
2014/07/04 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
python框架flask表单实现详解
2019/11/04 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
python自动化发送邮件实例讲解
2021/01/04 Python
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
大整数数相乘的问题
2012/07/22 面试题
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
家长评语大全
2014/01/22 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
5s标语大全
2014/06/23 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL