#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 %}
что-то вроде этого (я не говорю на вашем языке)