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根据出生日期返回年龄的方法
Mar 26 Python
初学Python函数的笔记整理
Apr 07 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
Python中的函数作用域
May 07 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
Python弹出输入框并获取输入值的实例
Jun 18 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Python Dataframe常见索引方式详解
May 27 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 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 include和require的区别深入解析
2013/06/17 PHP
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
js取得url地址参数实例
2013/02/22 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
JQuery中extend使用介绍
2014/03/13 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
浅谈js的异步执行
2016/10/18 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
Python 26进制计算实现方法
2015/05/28 Python
python实现求最长回文子串长度
2018/01/22 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
Python将string转换到float的实例方法
2019/07/29 Python
Python气泡提示与标签的实现
2020/04/01 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
理货员的岗位职责
2013/11/23 职场文书
大型会议接待方案
2014/03/01 职场文书
个人贷款承诺书
2014/03/28 职场文书
单位工作证明范本
2015/06/15 职场文书
学校教学管理制度
2015/08/06 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
java开发双人五子棋游戏
2022/05/06 Java/Android