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 字符串split的用法分享
Mar 23 Python
python的Template使用指南
Sep 11 Python
为python设置socket代理的方法
Jan 14 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
python离线安装外部依赖包的实现
Feb 13 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
Python预测2020高考分数和录取情况
Jul 08 Python
python爬虫破解字体加密案例详解
Mar 02 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学习笔记之 函数声明(二)
2011/06/09 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
列表内容的选择
2006/06/30 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
JS document对象简单用法完整示例
2020/01/14 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Python适配器模式代码实现解析
2019/08/02 Python
python实现静态服务器
2019/09/05 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
大学毕业生通用自荐信范文
2013/10/31 职场文书
资产经营总监岗位职责范文
2013/12/01 职场文书
绩效管理实施方案
2014/03/19 职场文书
负责人任命书范本
2014/06/04 职场文书
物理教育专业求职信
2014/06/25 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python