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基于有道实现英汉字典功能
Jul 25 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
Python的iOS自动化打包实例代码
Nov 22 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
分析经典Python开发工程师面试题
Apr 08 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
python如何获取apk的packagename和activity
Jan 10 Python
Python实现Wordcloud生成词云图的示例
Mar 30 Python
Python decorator拦截器代码实例解析
Apr 04 Python
解决Django no such table: django_session的问题
Apr 07 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实现自动对图片进行滚动显示的方法
2015/03/12 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
JS实现简易日历效果
2021/01/25 Javascript
用Python实现协同过滤的教程
2015/04/08 Python
python的else子句使用指南
2016/02/27 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
毕业生简单求职信
2013/11/19 职场文书
创业女性典型材料
2014/05/02 职场文书
奥运会口号
2014/06/13 职场文书
违纪检讨书
2015/01/27 职场文书
世界文化遗产导游词
2019/08/07 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang