在没有摘录时显示消息 - Django模板

时间:2015-06-22 18:54:56

标签: python django django-templates django-template-filters

我在Django模板上有这个字段:

<p class="border_dotted_bottom">
                          {{ expert.description|slice:":300"  }}
<a href="{% url 'profile' expert.username %}">{% trans "read more" %}</a>....
</p>

如果此对象(用户)没有'decription'(文本字段),则显示单词'None',我需要摆脱它,也许如果他没有'description'则显示一个Simple文字,然后“阅读更多”

到目前为止,我已经尝试过了:

        <p class="border_dotted_bottom">
            {{ % if expert.description >= 1 %}}
            {{ expert.description|slice:":300" }}
                {{% else %}}
            Éste usuario por el momento no tiene descripción
        <a href="{% url 'profile' expert.username %}">{% trans "read more" %}</a>....
         </p>

但它不起作用,我认为这只是一个错字,或者可能与我在这里使用的条件有关...

任何人都可以对此有所了解吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

您的问题与if/else标签有关。你有这个:

{{ % if ... %}}
  ...
{{% else %}}
  ...

首先,您需要if/else围绕{% %},而不是{{% %}}。其次,你没有endifif/else块应如下所示:

{% if ... %}
  ...
{% else %}
  ...
{% endif %}

因此,您想要的块看起来像这样:

<p class="border_dotted_bottom">
  {% if expert.description >= 1 %}
    {{ expert.description|slice:":300" }}
  {% else %}
    Éste usuario por el momento no tiene descripción
  {% endif %}
  <a href="{% url 'profile' expert.username %}">{% trans "read more" %}</a>....
</p>

话虽如此,您应该能够使用Django的内置default tagdefault_if_none tag来简化此操作,具体取决于您是否要在expert.description时提供默认值等于'' / None或仅None

<p class="border_dotted_bottom">
  {{ expert.description|default:"Éste usuario por el momento no tiene descripción"|slice:":300" }}
  <a href="{% url 'profile' expert.username %}">{% trans "read more" %}</a>....
</p>