утверждение шаблона django, если! = Null не работает - PullRequest
0 голосов
/ 17 марта 2019

@ Исправлено

У меня проблема с тегом шаблона {% if ... in ... %}.Я пытаюсь написать операторы, если объект не существует (равно нулю), то ничего не отображать.У моей модели было мало полей для ссылок на такие социальные медиа, как instagram, facebook, twitter и т. Д., И не каждая компания получила все социальные сети, как мы знаем.Проблема в том, что если эти утверждения не работают должным образом (я проверил документацию django), например, если компания добавила ссылки на все социальные медиа (твиттер, fb, instagram, linkedin, веб-сайт), она должна отображать изображения со ссылками наих.Но если компания не добавила ссылку на социальные сети или веб-сайт, она не должна отображать изображения.Я не знаю, почему эти утверждения не работают

Об изображениях, если я удаляю цикл {% for ... %} {% endfor %}, тогда отображаются все изображения, даже если компания не связала никаких ссылок, так что если заявления также не работаютзатем

/ 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 Ответ

1 голос
/ 17 марта 2019

Хорошо, я понял, проблема была

{% if brand.website != Null %}

так что я думаю, что Джанго не знает, что означает это утверждение. Пока я изменил его на

{% if brand.website %}

тогда он работает как следует. Если у компании есть какая-либо ссылка в поле веб-сайта, то она отображает изображение-значок, но если у компании нет ссылки в поле веб-сайта, она не отображает изображение-значок.

Извините за вводный ответ, я уже должен проверить сообщение без != Null

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...