首页 > 解决方案 > 在 Django 中为新内容显示 SVG

问题描述

我想为过去 2 天内创建的任何新内容显示 SVG。我只是想知道我该怎么做。

视图.py:

def short_story_list(request):
shorts = models.Short.objects.filter(is_live=True).order_by('-created_at')
return render(request, 'stories/short_story_list.html', {'shorts': shorts})

short_story_list.html:

{% for short in shorts %}
        <div class="block">
            <h3><a href="{% url 'short-detail' short.slug %}">{{ short.title }}</a></h3>
            {% if short.created_at %}
                <img src="{% static 'svg/outline-fiber_new-24px.svg' %}">
            {% endif %}
            <br>
        </div>
    {% endfor %}

如何确保只显示 SVG?

标签: pythondjangosvgdjango-templatesdjango-views

解决方案


from datetime import datetime

today = datetime.date.today()
date_2_back = today - datetime.timedelta(days=2)

shorts_latest = models.Short.objects.filter(start_time__lt=today, end_time__gt=date_2_back)

timedelta()如果您只想要shorts最后 2 天,您可以使用。

或者,您可以在模型中添加一个函数,true如果created_at两个日期之间则返回:

def latest_condition(self):
    if self.created_at - datetime.date.today() <= datetime.timedelta(days=2):
          return True
    else:
          return False

推荐阅读