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 相关文章推荐
python3如何将docx转换成pdf文件
Mar 23 Python
Python读写/追加excel文件Demo分享
May 03 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
python事件驱动event实现详解
Nov 21 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
详解python中eval函数的作用
Oct 22 Python
python zip()函数使用方法解析
Oct 31 Python
解决python3安装pandas出错的问题
May 20 Python
简单谈谈Python面向对象的相关知识
Jun 28 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的session cookie错误
2009/08/09 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
php封装的smarty类完整实例
2016/10/19 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
跟老齐学Python之类的细节
2014/10/13 Python
python实现日常记账本小程序
2018/03/10 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
python如何绘制疫情图
2020/09/16 Python
python openssl模块安装及用法
2020/12/06 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
建议书怎么写
2014/03/12 职场文书
网站推广策划方案
2014/06/04 职场文书
求职自我评价范文100字
2014/09/23 职场文书
银行转正自我鉴定
2014/09/29 职场文书