如果其他代码在layout.html django

时间:2019-07-01 09:43:04

标签: python django

我正在尝试使用django实现博客应用。在主页中将有帖子列表。“ post.author.profile.image”是从数据库加载图像的路径。 “ post.author.profile.image”为“无”,我需要加载备用图像,如果存在,则应从数据库加载该图像。因此,我尝试了以下代码:

 def homepage(request):
    post= Post.objects.all().order_by('-date')
    return render(request,'layout.html',{'posts':post})

 layout.html

 {% for post in posts %}
    <div class="list">
        <div class="con">
            {% if "post.author.profile.image.url" is None %}
            <img src="{% static 'images/b.png' %}" class='logo3'/>
            {% else %}
            <img src="{{ post.author.profile.image.url }}" class='logo3'/>
            {% endif %}
        </div>
    </div>
  {% endfor %}

运行服务器后,如果我单击检查图像标签的src中的路径为media / None.if下的代码甚至没有运行。我的代码有什么问题?

4 个答案:

答案 0 :(得分:1)

如何检查图像是否存在?

{% if post.author.profile.image %}
    <img src="{{ post.author.profile.image.url }}" class='logo3'/>
{% else %}
    <img src="{% static 'images/b.png' %}" class='logo3'/>
{% endif %}

答案 1 :(得分:0)

尝试一下

{% if post.author.profile.image.url %}
    <img src="{{ post.author.profile.image.url }}" class='logo3'/>
{% else %}
    <img src="{% static 'images/b.png' %}" class='logo3'/>
{% endif %}

答案 2 :(得分:0)

这里

{% if "post.author.profile.image.url" is None %}

您正在测试文字字符串"post.author.profile.image.url"是否为None,因为文字字符串永远不会是None,所以它必须保证为假。

您想要变量本身:

{% if post.author.profile.image.url is None %}

答案 3 :(得分:-1)

 {% if post.author.profile.image == 'null' %}
  <img src="{% static 'images\b.jpg' %}" class="logo3">
 {% else %}
  <img src="{{post.author.profile.image.url}}" class="logo3">
 {% endif %}

我仍然想知道这段代码是如何工作的。我之前曾尝试过,但那时可能没有用,可能是我犯了其他错误。但是这段代码正在工作。