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中为feedparser设置超时时间避免堵塞
Sep 28 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
值得收藏,Python 开发中的高级技巧
Nov 23 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
Python对列表的操作知识点详解
Aug 20 Python
python-numpy-指数分布实例详解
Dec 07 Python
Python的pygame安装教程详解
Feb 10 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
python实现批量命名照片
Jun 18 Python
Python之字符串的遍历的4种方式
Dec 08 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中去除所有js,html,css代码
2010/10/12 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
Jquery EasyUI $.Parser
2017/06/02 jQuery
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
JS中的多态实例详解
2017/10/15 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
Python中的探索性数据分析(功能式)
2017/12/22 Python
Python切片操作深入详解
2018/07/27 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
自荐书模板
2013/12/15 职场文书
文明家庭事迹材料
2014/12/20 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Python pygame实现中国象棋单机版源码
2021/06/20 Python