Я создаю новостной сайт. Мне нужно отобразить 48 часов самых просматриваемых новостей, эта часть находится на странице detail.html.Сейчас я использую этот метод.
def newsDetailView(request, news_pk):
news = get_object_or_404(News, id=news_pk)
News.objects.filter(id=news_pk).update(pv=F('pv') + 1)
time_period = datetime.now() - timedelta(hours=48)
host_news=news.objects.filter(date_created__gte=time_period).order_by('-pv')[:7]
return render(request, "news_detail.html", {
'news': news,
'host_news' : host_news
})
Он работает очень хорошо, но мой вопрос в том, чтобы в целях удобного использования кэша я хотел отделить функции hot_news от def newsDetailView .
Я пытался:
def hot_news(request):
time_period = datetime.now() - timedelta(hours=48)
hot_news =News.objects.filter(add_time__gt=time_period).order_by('-pv')[:7]
return render(request, "news_detail.html", {
'most_viewedh': most_viewedh
})
Однако я не могу получить данные, в detail.html
.Я предполагаю, что проблема в том, что URL.
ссылка detail.html
из index.html
равна
<a href="{% url 'news:news_detail' news.pk %}">
news:news_detail
- это URL представления def newsDetailView
Таким образом, URL-адрес находится прямо на def newsDetailView и не имеет ничего общего с def hot_news .
Что мне делать, поэтомучто я могу отобразить данные из def hot_news на ту же страницу, что и def newsDetailView делает?