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中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
初步探究Python程序的执行原理
Apr 11 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
解读! Python在人工智能中的作用
Nov 14 Python
python学习之hook钩子的原理和使用
Oct 25 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
python 定时器,轮询定时器的实例
Feb 20 Python
Python3 元组tuple入门基础
Feb 09 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
Pandas读取csv时如何设置列名
Jun 02 Python
python自动化办公操作PPT的实现
Feb 05 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
PHP内核探索:变量概述
2014/01/30 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
python timestamp和datetime之间转换详解
2017/12/11 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
实习单位推荐信范文
2013/11/27 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
义诊活动总结
2015/02/04 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
运动员入场词
2015/07/18 职场文书
车辆挂靠协议书
2016/03/23 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
SQL Server实现分页方法介绍
2022/03/16 SQL Server
python获取字符串中的email
2022/03/31 Python