Django web框架使用url path name详解


Posted in Python onApril 29, 2019

quicktool/view.py文件修改视图函数index(),渲染一个home.html模板

from django.shortcuts import render
def index(request):
  return render(request, 'home.html')

quicktool(应用app)下创建一个templates文件夹(模板),在templates下创建一个home.html

<!DOCTYPE html>
<html>
<head>
  <title>学习Django</title>
</head>
<body>

<a href="/add2/4/5/" rel="external nofollow" rel="external nofollow" >计算 4+5</a>

</body>
</html>

mytestsite/urls.py文件将视图函数index()对应的网址取名name为home(只要这个名字不变,网址变了也能通过名字获取到)

urlpatterns = [
  path('admin/', admin.site.urls),
  path('', quicktool_views.index, name='home'), # 新增name值
  path('add/', quicktool_views.add, name='add'), # 新增
  path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),  # 新增
]

运行开发服务器,访问http://127.0.0.1:8000/,可以看到

Django web框架使用url path name详解

点击标签a会执行脚本进行计算,但是home.html中代码a标签的url是"写死"的,我们可以通过url的name传参,home.html增加以下代码

#不带参数的:
#{% url 'name' %}
#带参数的:参数可以是变量名
#{% url 'name' 参数 %}

<a href="/add2/4/5/" rel="external nofollow" rel="external nofollow" >计算 4+5</a>
<a href="{% url 'add2' 70 80 %}" rel="external nofollow" >计算 70+80</a>  # 新增

运行开发服务器,访问http://127.0.0.1:8000/,可以看到

Django web框架使用url path name详解

点击第一个a标签跳转请求的url为http://127.0.0.1:8000/add2/4/5/

点击第二个a标签跳转请求的url为http://127.0.0.1:8000/add2/70/80/

第二个a标签的写法是根据url name 值传参进行跳转,即根据mytestsite/urls.py文件的url path()的属性值name匹配,再传相应的参数值,进行"不写死"请求。

在url path()的属性值name不修改的前提下,修改url path()的第一个路径参数,那么a标签获取的网址也会动态相应变化。

比如

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),

改成

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),

除此,还需要写一个跳转到新地址的函数,Django并不会自动更新跳转地址

例如旧的地址收藏夹为/add2/4/5/,访问时就会自动跳转到新的/new_add2/4/5/

具体操作是,在quicktool/view.py文件写一个跳转函数

from django.shortcuts import render
from django.http import HttpResponseRedirect
def old_add2_redirect(request, a, b):
  return HttpResponseRedirect(
    reverse('add2', args=(a, b))
  )

mytestsite/urls.py文件新增url

path('new_add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'), # 新地址
path('add2/<int:a>/<int:b>/', quicktool_views.old_add2_redirect),  # 旧地址

访问http://127.0.0.1:8000/,刷新后,可以看到

Django web框架使用url path name详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅谈Python的Django框架中的缓存控制
Jul 24 Python
Python 的内置字符串方法小结
Mar 15 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
python 自定义装饰器实例详解
Jul 20 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
Django接收自定义http header过程详解
Aug 23 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
如何提高python 中for循环的效率
Apr 15 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 #Python
Django使用redis缓存服务器的实现代码示例
Apr 28 #Python
django的settings中设置中文支持的实现
Apr 28 #Python
Django数据库类库MySQLdb使用详解
Apr 28 #Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 #Python
​如何愉快地迁移到 Python 3
Apr 28 #Python
python学习开发mock接口
Apr 28 #Python
You might like
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php按单词截取字符串的方法
2015/04/07 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
React快速入门教程
2017/01/17 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
Python内置函数reversed()用法分析
2018/03/20 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Python求凸包及多边形面积教程
2020/04/12 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书