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代码检查工具pylint 让你的python更规范
Sep 05 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python中的__slots__示例详解
Jul 06 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
django xadmin action兼容自定义model权限教程
Mar 30 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
Django CBV模型源码运行流程详解
Aug 17 Python
Django框架请求生命周期实现原理
Nov 13 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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基础知识:函数基础知识
2006/12/13 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
php中switch语句用法详解
2015/08/17 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
DWR Ext 加载数据
2009/03/22 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
js类式继承的具体实现方法
2013/12/31 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
Python使用folium excel绘制point
2019/01/03 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
python操作cfg配置文件方式
2019/12/22 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
python Cartopy的基础使用详解
2020/11/01 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
医大实习自我鉴定
2013/12/07 职场文书
30年同学聚会感言
2014/01/30 职场文书
个人授权委托书样本
2014/09/13 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
Win10 Anaconda安装python-pcl
2022/04/29 Servers