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中decorator使用实例
Apr 14 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python模拟用户登录验证
Sep 11 Python
Python3 queue队列模块详细介绍
Jan 05 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
TensorFlow实现简单的CNN的方法
Jul 18 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
python 5个实用的技巧
Sep 27 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
javascript 流畅动画实现原理
2009/09/08 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
python提取页面内url列表的方法
2015/05/25 Python
python控制台中实现进度条功能
2015/11/10 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
python动态文本进度条的实例代码
2020/01/22 Python
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
前台文员岗位职责
2013/12/28 职场文书
运动会广播稿50字
2014/01/26 职场文书
网络宣传方案
2014/03/15 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
幼师求职自荐信
2014/05/31 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis