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 WXPY实现微信监控报警功能的代码
Oct 20 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
Python button选取本地图片并显示的实例
Jun 13 Python
Python socket非阻塞模块应用示例
Sep 12 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 Python
Python 简单计算要求形状面积的实例
Jan 18 Python
基于matplotlib xticks用法详解
Apr 16 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配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
PHP 中常量的知识整理
2017/04/14 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
javascript背投广告代码的完善
2008/04/08 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python输出指定月份日历的方法
2015/04/23 Python
python 循环while和for in简单实例
2016/08/16 Python
python数据处理实战(必看篇)
2017/06/11 Python
Random 在 Python 中的使用方法
2018/08/09 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
python 求定积分和不定积分示例
2019/11/20 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
公司委托书范本
2014/04/04 职场文书
对照检查剖析材料
2014/09/30 职场文书
民主生活会发言材料
2014/10/20 职场文书
学校教学管理制度
2015/08/06 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python