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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
零基础写python爬虫之爬虫的定义及URL构成
Nov 04 Python
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
Django视图和URL配置详解
Jan 31 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
Python collections模块使用方法详解
Aug 28 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
学python需要去培训机构吗
Jul 01 Python
如何利用Python动态模拟太阳系运转
Sep 04 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
python 制作一个gui界面的翻译工具
May 14 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自定义函数实现二维数组排序功能
2016/07/20 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
python下MySQLdb用法实例分析
2015/06/08 Python
Python读写unicode文件的方法
2015/07/10 Python
详解python调度框架APScheduler使用
2017/03/28 Python
Python列表对象实现原理详解
2019/07/01 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
保送生自荐信范文
2013/10/06 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
党支部承诺书范文
2014/03/28 职场文书
政府采购方案
2014/06/12 职场文书
夏季药店促销方案
2014/08/22 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL