Django在前端html页面使用字典key键查找

刚才碰到的一个小难点,在前端页面中传进一个字典参数,比如

movie_rate = {'Avengers':4,'Skyfall':3}
render(request,'index.html',{'movie_rate':movie_rate})

在前端页面中,如果电影的title是需要使用movie.title来调用的话,程序是跑不通的

<span>{{ movie_rate.movie.title }} </span> {#会报错#}

这时候需要自定义模板标签(tags),模板标签就是在html文件开头的{% load %}里的东西

首先,在app的路径下新建一个templatetags文件夹(如果没有)。在文件夹中新建一个__init__.py空文件,告诉程序这个目录是一个python包,然后此路径下再新建一个比如叫movie_extras.py的文件
此时目录结构长这样

movie/
    __init__.py
    models.py
    templatetags/
        __init__.py
        movie_extras.py
    views.py

然后在movie_extras.py中添加代码:

from django import template

register = template.Library()

@register.filter('hash')
def hash(h, key):
    return h[key]

html最开始添加

{% load movie_extras %}

然后重启一下server,大功告成

在前端使用如下调用方法即可

<span>{{ movie_rate|hash:movie.id }} </span>

官方文档:https://docs.djangoproject.com/en/3.1/howto/custom-template-tags/

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值