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的汉字转GBK码实现代码
Feb 19 Python
使用Python脚本将Bing的每日图片作为桌面的教程
May 04 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
Python动态语言与鸭子类型详解
Jul 01 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 Python
使用Python实现批量ping操作方法
May 06 Python
Python爬虫教程知识点总结
Oct 19 Python
解决pytorch-gpu 安装失败的记录
May 24 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输出时间格式
2013/08/31 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
jQuery实现鼠标移入显示蒙版效果
2020/01/11 jQuery
vue-cli点击实现全屏功能
2020/03/07 Javascript
python字符串替换的2种方法
2014/11/30 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
白酒市场开发计划书
2014/01/09 职场文书
委托书模板
2014/04/04 职场文书
机械专业技术员求职信
2014/06/14 职场文书
党支部活动策划方案
2014/08/18 职场文书
幼儿园开学通知
2015/04/24 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
社区低保工作总结2015
2015/07/23 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
新员工入职感言范文!
2019/07/04 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
Java实现注册登录跳转
2022/06/16 Java/Android