我的应用程序中有一部分允许自定义徽标。
默认对象(和对象视图)状态不是自定义徽标,但是如果存在,则将标题替换为自定义徽标导航栏。
徽标是co(mpany)模型上的标准ImageField:
models.py:
class Co(models.Model):
logo = models.ImageField(blank=True)
模板:
{% if co.logo %}
{% block navbar %}
{% include 'templates/navbar_logo.html' %}
{% endblock %}
{% endif %}
我也尝试过使用{% if co.logo == None %}
,{% if not ... %}
,{% if co.logo.url %}
进行此操作,并尝试使用co.logo|default_if_none:""
为逻辑建模,但是在未设置徽标的情况下,视图抛出:
ValueError at /co/foo
The 'logo' attribute has no file associated with it.
对于...为空也不起作用
{% for co.logo.url in co %}
...
{% empty %}
...
{% endfor %}
在django shell中:
(带有徽标)
c.logo >> <ImageFieldFile: logo.png>
c.logo.url >> '/media/logo.png'
(无徽标)
b.logo >> <ImageFieldFile: None>
是否有内置的django模板标签过滤器,仅当字段上传了图像时,该条件才能通过True?否则不加载导航块?谢谢
答案 0 :(得分:1)
我通过重新排序标签解决了这个问题:
{% block navbar %}
{% if co.logo %}
{% include 'templates/navbar_logo.html' %}
{% else %}
{% include 'templates/navbar.html' %}
{% endif %}
{% endblock %}
答案 1 :(得分:0)
尝试使用“不为空”
{% if co.logo.url is not null %}
{% block navbar %}
{% include 'templates/navbar_logo.html' %}
{% endblock %}
{% endif %}