django模板语句,如果!= Null不起作用

时间:2019-03-17 14:39:58

标签: django django-templates

@固定

我对模板标签{% if ... in ... %}遇到问题。我正在尝试编写语句,如果对象不存在(等于Null),则不显示任何内容。我的模型中很少有用于链接到instagram,facebook,twitter等社交媒体的字段,而且并不是每个公司都知道每个社交媒体。问题是这些If语句无法正常运行(我检查了django文档),例如,如果公司已向所有社交媒体(twitter,fb,instagram,linkedin,网站)添加了链接,则其应显示带有以下链接的图像:他们。但是,如果公司未添加任何指向社交媒体或网站的链接,则不应显示图像。我不知道为什么这些陈述不起作用

关于图片,如果我删除循环{% for ... %} {% endfor %} 那么即使公司没有关联任何链接,它也会显示所有图像,因此if语句也无法正常工作

/ EDIT

我不得不更改

之类的语句
% if brand.website != None %}

{% if brand.website %}

并修复了所有问题

comp_view.html

<div class="social-media">
{% for brand in brands %
{% if brand.website != None %}
    <a class="" href="{{ brand.website }}">
        <img src="/static/icons/website.png">
    </a>
{% endif %}

{% if brand.facebook != None %}
    <a class="" href="{{ brand.facebook }}">
        <img src="/static/icons/facebook.png">
    </a>
{% endif %}

{% if brand.instagram != None %}
<a class="" href="{{ brand.instagram }}">
    <img src="/static/icons/instagram.png">
</a>
{% endif %}

{% if brand.twitter != None %}
    <a class="" href="{{ brand.twitter }}">
        <img src="/static/icons/twitter.png">
    </a>
{% endif %}

{% if brand.linkedin != None %}
    <a class="" href="{{ brand.linkedin }}">
        <img src="/static/icons/linkedin.png">
    </a>
{% endif%}
{% endfor %}
</div>

views.py

def brands(request, slug):
    brand = get_object_or_404(Company, slug=slug)
    return render(request, 'company/comp_view.html', {'brand': brand})

models.py

class Company(models.Model):
    ...
    technologies = models.ManyToManyField('Stack')
    website = models.TextField(max_length=150, blank=True, null=True, validators=[URLValidator()])
    facebook = models.TextField(max_length=150, blank=True, null=True, validators=[URLValidator()])
    instagram = models.TextField(max_length=150, blank=True, null=True, validators=[URLValidator()])
    twitter = models.TextField(max_length=150, blank=True, null=True, validators=[URLValidator()])
    linkedin = models.TextField(max_length=150, blank=True, null=True, validators=[URLValidator()])

1 个答案:

答案 0 :(得分:1)

好,我明白了,问题是

{% if brand.website != Null %}

所以我认为django不知道这句话的意思。当我将其更改为

{% if brand.website %}

然后它应该工作,如果公司在网站字段中有任何链接,则显示图像图标,但是如果公司在网站字段中没有任何链接,则不显示图像图标。

很抱歉打开答案,我应该已经检查了没有!= Null的情况