我在几个视图使用的模板中有一个条件,如果视图传入,它将包含一个js文件:
在模板中:
{% if js_file %}
{% block inner_js %}
<script defer type="text/javascript" src="{% static js_file %}"></script>
{% endblock inner_js %}
{% endif %}
例如由视图使用:
.......
context = {'title': 'Sign up',
'form': form,
'js_file': 'js/supplier.js'}
return render(request, 'pages/signup.html', context)
这在开发中没有产生错误,但是当推送到生产时我得到错误:
ValueError at /users/example/
Missing staticfiles manifest entry for ''
如果我删除了上面的模块,那么这个错误就会消失(并且适用于那些使用没有js文件的模板的视图)。 我宁愿不必为每个使用js文件的视图创建模板的新版本,他们是更好的解决方法吗? (似乎有点奇怪的错误)。
答案 0 :(得分:1)
我不相信你可以有条件地包含/排除一个阻止你正在做的事情。如果您将Select TOP 1 * from openquery(X , 'SELECT * FROM fruit.apples')
标记放在if
内,则只有在填充变量block
时才会包含<script>
标记。
如果您有条件地将此块包含在更高版本的模板中覆盖另一个名为js_file
的块,您可以执行以下操作以获得相同的结果:
inner_js
{% block inner_js %}
{% if js_file %}
<script ...></script>
{% else %}
{{ block.super }}
{% endif %}
{% endblock inner_js %}
相当于在类中调用Python的{{ block.super }}
,并允许在扩展基础的模板中进行块扩展。