我正在建立一个新闻网站。我需要显示 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
. 我想问题是因为网址。
detail.html
来自的链接index.html
是
<a href="{% url 'news:news_detail' news.pk %}">
news:news_detail
是视图def newsDetailView的url
所以 url 是直接指向def newsDetailView ,和def hot_news没有任何关系。
我应该怎么做才能将 def hot_news 中的数据渲染到与 def newsDetailView相同的页面?