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中除法使用的注意事项
Aug 21 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
Python实现的生成格雷码功能示例
Jan 24 Python
pandas修改DataFrame列名的方法
Apr 08 Python
Python的多维空数组赋值方法
Apr 13 Python
python替换字符串中的子串图文步骤
Jun 19 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
使用python实现ftp的文件读写方法
Jul 02 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
python文件操作的简单方法总结
Nov 07 Python
python dataframe NaN处理方式
Dec 26 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 number_format() 函数定义和用法
2012/06/01 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
Vue 事件处理操作实例详解
2019/03/05 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python栈算法的实现与简单应用示例
2017/11/01 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
Python函数装饰器实现方法详解
2018/12/22 Python
python已协程方式处理任务实现过程
2019/12/27 Python
pycharm的python_stubs问题
2020/04/08 Python
Python 创建守护进程的示例
2020/09/29 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
python绘制高斯曲线
2021/02/19 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
珍惜水资源建议书
2014/03/12 职场文书
小学运动会口号
2014/06/07 职场文书
2015年人事科工作总结
2015/04/28 职场文书
golang正则之命名分组方式
2021/04/25 Golang
如何使用PyCharm及常用配置详解
2021/06/03 Python
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
mybatis 获取更新记录的id
2022/05/20 Java/Android