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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 Python
Python函数式编程指南(三):迭代器详解
Jun 24 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
pyttsx3实现中文文字转语音的方法
Dec 24 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 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
Yii中创建自己的Widget实例
2016/01/05 PHP
php文件上传类的分享
2017/07/06 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
javascript实现智能手环时间显示
2020/09/18 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Python删除n行后的其他行方法
2019/01/28 Python
python反编译学习之字节码详解
2019/05/19 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
咖啡蛋糕店创业计划书
2014/01/28 职场文书
买房委托公证书
2014/04/08 职场文书
阅兵口号
2014/06/19 职场文书
公司周年庆活动方案
2014/08/25 职场文书
2015年售票员工作总结
2015/04/29 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python