刚才碰到的一个小难点,在前端页面中传进一个字典参数,比如
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/