我是Django的新手,到目前为止还可以,但是我在构建动态URL时遇到困难。
<script>console.log("{% static 'img/emblem/league/scaled/league_' %}" + {{ league.id }} + ".png");</script>
此行工作正常,并输出正确的链接,在本例中为
/static/img/emblem/league/scaled/league_1729.png
但是在以下行中,当我尝试构建动态URL以在for循环中显示不同的图像时,尝试用| add进行操作时会收到TemplateSyntaxError,因为“ +”也不起作用(图像无法加载)
<div class="owl-item"><img class="img-fluid" src="{% static 'img/emblem/league/scaled/league_'|add:{{ league.id }}|add:'.png' %}" alt="{{ league.name }}"></div>
/ matchstatistics /处的TemplateSyntaxError 添加需要2个参数,提供1个参数
我进行了很多搜索,但找不到解决方法,谢谢。
答案 0 :(得分:1)
我建议您创建一个模板标签来管理图像网址的创建。
from django import template
from django.contrib.staticfiles.templatetags.staticfiles import static
register = template.Library()
@register.simple_tag
def get_img_url(img, *args, **kwargs):
"""Returns the img url of the given img
.. usage:: {% get_img_url image_object %}
"""
image_path = 'here you build your path using the img passed'
return static(image_path)
更多信息在这里:https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/#writing-custom-template-tags
答案 1 :(得分:0)
如果有人感兴趣,我可以这样解决:
在您的应用目录中的新目录中创建一个文件,将其称为“ templatetags”,然后使用您的html文件名创建另一个.py文件。例如index.py代表index.html。
from django import template
from django.conf.urls.static import static
from django.templatetags.static import static
from ..models import League
register = template.Library()
@register.simple_tag
def getLeagues():
leagues = League.objects.filter(active=1)
lgs = []
for leagueObj in leagues:
league = {
"id": leagueObj.id,
"name": leagueObj.name,
"url": static('img/emblem/league/scaled/league_' + str(leagueObj.id) + '.png')
}
lgs.append(league)
return lgs
以及django模板中的HTML文件中,对我来说是index.html文件。
{% getLeagues as leagues %}
{% for league in leagues %}
<div class="owl-item">
<a href="{% url 'matchstatistics:league' league.id %}">
<img class="img-fluid" src="{{ league.url }}" alt="{{ league.name }}">
</a>
</div>
{% endfor %}
总结,这段代码是什么? 在轮播中显示图片,一旦您单击某个元素,它将调用具有给定ID的另一个网站来定义网址路径
答案 2 :(得分:0)
您可以使用
如果您在settings.py中正确设置了静态网址,则我还没有测试过,但假定可以使用。
或
app.js
这是我测试过的,效果很好。 本质上来说,破解静态命令是为了返回空字符串的静态URL,然后将其添加到动态路径之前。