Когда я захожу на страницу, ничего не появляется

вопрос

Я хочу использовать следующий код для фильтрации данных в models.py в views.py и вывода списка Today_list в today.html, но когда я открываю этот url, ничего не отображается. В чем проблема?



    class Post(models.Model): 
        created =models.DateTimeField(auto_now_add=True,editable=False,blank=False,null=False)
        title =models.CharField(max_length=255,blank=False,null=False)
        body =models.TextField(blank=True,null=False)
        def __str__(self):
            return self.title
    from Todolist import models
    from django.views.generic import ListView
    from django.utils import timezone

    class TodayView(ListView):
        model = models.Post
        template_name ='Todolist/today.html'
        def get_queryset(self):
            Today_list= models.Post.objects.filter(
                created=timezone.now()).order_by('-id')
            return Today_list
    {% extends "Todolist/base.html" %}
    {% block content %}
    {% for item in Today_list %}
    <tr>
        <td>{{item.title}}</td>
    </tr>
    {% endfor %}
    {% endblock %}
    urlpatterns=[
        path('today/' ,views.TodayView.as_view() ,name='today')]

используйте get_context_data для добавления списка Today_list в контекст ссылка : https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-display/

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['Today_list'] = self.get_queryset()
    return context
<
{% extends "Todolist/base.html" %}
{% block content %}
{% for item in post_list %}
<tr>
    <td>{{item.title}}</td>
</tr>
{% endfor %}
{% endblock %}
или вы можете просто использовать в шаблоне model.name_list в вашем случае это будет post_list вместо today_list

Проблема в том, что вам нужны объекты, которые были созданы сегодня, но ваш фильтр проверяет только сегодня, а не today. Поэтому для достижения сегодняшних постов, вы можете сделать такую фильтрацию:

from django.utils import timezone

def get_queryset(self):
    Today_list = models.Post.objects.filter(
        created__gte=timezone.now().replace(hour=0, minute=0, second=0),
        created__lte=timezone.now().replace(hour=23, minute=59, second=59)
    ).order_by('-id')
    return Today_list

этот набор запросов возвращает объекты, которые были созданы сегодня.

Вернуться на верх