Привет, кто-нибудь может помочь мне с некоторыми представлениями django?

#django #django-views #django-templates

#django #django-views #django-шаблоны

Вопрос:

Я надеюсь, что кто-нибудь сможет решить эту проблему. Моя цель — взять сообщения за последний час и вставить их в словарь со всей информацией (автор, название, текст и дата публикации). В конце я хочу поместить его в HTML-файл. Это мой код:

views.py

 @superuser_only
def PostUltimaOra(request):
    post_detail = {}
    dt = now()
    PostsLastHour = Post.objects.filter(published_date__range=(dt-timedelta(hours=1), dt))
    for each in PostsLastHour:
        post_detail = {
            'author': each.author,
            'title': each.title,
            'text': each.text,
            'published_date': each.published_date,
        }
    dj = json.dump(post_detail)
    return render(request, 'blog/numeroposts.html', {'dj': dj})
  

models.py

 class Post(models.Model):
     author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
     title = models.CharField(max_length=200)
     text = models.TextField()
     created_date = models.DateTimeField(default=timezone.now)
     published_date = models.DateTimeField(blank=True, null=True)


     def publish(self):
         self.published_date = timezone.now()
         self.save()

     def __str__(self):
         return self.title
  

HTML

 {% extends 'blog/base.html' %}

{% block content %}
     <h1>{{ 'Posts per utente:' }}</h1>
     {% for k, v in numero.items %}
         {{ 'L utente con id n° '}} {{ k }} {{ ' ha pubblicato '}}  {{ v }} {{ ' posts' }}
         <p>{{ ''|linebreaksbr }}</p>
     {% endfor %}
     <h2>{{ 'I post pubblicati nell utlima ora sono questi: ' }} {{ dj }}</h2>


{% endblock %}
  

Комментарии:

1. Проблема в том, что в шаблоне ничего нет

Ответ №1:

О … нет необходимости делать все это и json’ing в наборе запросов, просто передайте QuerySet как контекст для шаблона…

 @superuser_only
def PostUltimaOra(request):
    post_detail = {}
    dt = now()
    PostsLastHour = Post.objects.filter(published_date__range=(dt-timedelta(hours=1), dt))
    
    return render(request, 'blog/numeroposts.html', {'dj': PostsLastHour})
  

и в шаблоне:

 {% extends 'blog/base.html' %}

{% block content %}
     <h1>{{ 'Posts per utente:' }}</h1>
     {% for k in dj %}
         'L utente con id n°  {{ k.title }}   ha pubblicato   {{ k.author }}  posts
         <p>{{ ''|linebreaksbr }}</p>
     {% endfor %}
     <h2> I post pubblicati nell utlima ora sono questi:  {{ dj|length }}</h2>


{% endblock %}
  

что-то вроде этого (я не говорю на вашем языке)