Django web框架使用url path name详解

作者:农夫 时间:2022-01-06 19:43:59 

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详解

来源:https://segmentfault.com/a/1190000019018238

标签:Django,url,path,name
0
投稿

猜你喜欢

  • 在Python的Django框架上部署ORM库的教程

    2021-04-08 02:20:47
  • python中input()的用法及扩展

    2021-07-05 08:45:57
  • 浅谈python3打包与拆包在函数的应用详解

    2022-03-05 00:33:15
  • python中用logging实现日志滚动和过期日志删除功能

    2021-03-17 14:21:18
  • 网页设计中怎么将px换成em

    2008-04-16 13:50:00
  • 关于PyTorch环境配置及安装教程(Windows10)

    2021-04-23 09:04:31
  • 一个asp简单购物车教程

    2007-09-17 11:02:00
  • python跨文件使用全局变量的实现

    2023-11-27 00:16:40
  • 慎用UL列表

    2009-03-25 20:21:00
  • Pycharm编辑器技巧之自动导入模块详解

    2022-02-06 06:11:14
  • Vue2.0在IE11版本浏览器中的兼容性问题

    2024-04-29 13:08:55
  • JS字符串累加Array不一定比字符串累加快(根据电脑配置)

    2024-05-02 16:10:18
  • Python中实现ipaddress网络地址的处理

    2023-12-04 16:43:38
  • Python实例一个类背后发生了什么

    2023-05-19 05:44:18
  • vue中typescript装饰器的使用方法超实用教程

    2024-05-28 15:47:06
  • php编程每天必学之表单验证

    2023-07-19 05:50:59
  • 微信小程序分享海报生成的实现方法

    2024-05-02 17:29:49
  • vue中的路由传值与重调本路由改变参数

    2024-04-27 16:10:12
  • Django REST Framework 分页(Pagination)详解

    2022-07-25 04:21:06
  • 实现MySQL回滚的Python脚本的编写教程

    2024-01-16 05:41:29
  • asp之家 网络编程 m.aspxhome.com