如何通过两个不同的视图将不同的数据呈现到同一页面 - Django

威廉

我正在建立一个新闻网站。我需要显示 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.htmlindex.htmlIS

 <a href="{% url 'news:news_detail' news.pk %}">

news:news_detail是 view def newsDetailView的 url

所以这个 url 直接指向def newsDetailView并且与def hot_news没有任何关系

我应该怎么做,这样我可以从数据呈现高清hot_news到同一页面高清newsDetailView呢?

白色4

因此,您说得对,因为您要访问的 url'news:news_detail'是唯一加载的视图。如果您确实想从另一个视图加载数据,您可以使用 ajax 只加载 hot_news 数据并将其插入到页面中。

虽然如果您想要实现的只是缓存 hot_news,这不是必需的。您可以改为使用 django 的低级缓存 api,如下所示:

from django.core.cache import cache

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)


    # Get host_news from the cache
    host_news = cache.get('host_news')

    # If it was not in the cache, calculate it and set cache value
    if not host_news:

        time_period = datetime.now() - timedelta(hours=48)
        host_news=news.objects.filter(date_created__gte=time_period).order_by('pv')[:7]        

        # Sets the cache key host_news with a timeout of 3600 seconds (1 hour)
        cache.set('host_news', host_news, 3600)

    return render(request, "news_detail.html", {
        'news': news,
        'host_news' : host_news
    })

关于低级缓存 api 的文档在这里:https : //docs.djangoproject.com/en/2.0/topics/cache/#the-low-level-cache-api

如果您还没有这样做,您可能还需要在 settings.py 中查看设置 CACHES

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django不同的URL进入同一页面

来自分类Dev

Django-如何分别编辑和提交多个表单,然后呈现回同一页面?

来自分类Dev

一页 django 中的两个视图

来自分类Dev

Angular.js-如何将两个不同的链接重定向到同一页面,但在angular.js中显示不同的数据

来自分类Dev

如何在同一页面中处理两个不同的数据主属性?

来自分类Dev

重定向到Django中的同一页面

来自分类Dev

Django-如何在同一页面中使多个对象动态化

来自分类Dev

如何将ng-if与filter一起用于过滤记录并在同一页面中显示两个不同的视图?

来自分类Dev

区分Django views.py中同一页面上的不同发布请求

来自分类Dev

javascript-如何在同一页面,不同的div上加载两个Google图表

来自分类Dev

Apex-同一页面上的两个按钮,分支到不同的位置

来自分类Dev

如何在Django中添加同一模型的两个不同的整数字段

来自分类Dev

django-当form.is_valid()为false时如何返回包含所有数据的同一页面

来自分类Dev

Django,在一页上上传两个文件

来自分类Dev

在Django-admin中,如何在同一页面中显示外键的外键?

来自分类Dev

如何通过在django中使用两个不同的日期进行过滤来获取数据?

来自分类Dev

如何从Django中两个不同的表返回数据?

来自分类Dev

如何编写两个链接到同一页面的不同作业?

来自分类Dev

如何使用htaccess使用不同的URL呈现同一页面

来自分类Dev

如何从不同的get请求呈现同一页面?

来自分类Dev

如何使用htaccess使用不同的URL呈现同一页面

来自分类Dev

Django:重定向仍保留在同一页面中

来自分类Dev

使用 Django、Python 和 MongoDB 在同一页面中导航

来自分类Dev

同一页面中的两个ui视图AngularJs

来自分类Dev

同一页面中的两个ui视图AngularJs

来自分类Dev

找出两个URL是否导航到同一页面

来自分类Dev

Django:两个不同的子类指向同一个父类

来自分类Dev

通过Django中同一页面上的多个按钮启动AJAX请求

来自分类Dev

Django:使用 POST 处理表单到同一页面的正确方法

Related 相关文章

  1. 1

    Django不同的URL进入同一页面

  2. 2

    Django-如何分别编辑和提交多个表单,然后呈现回同一页面?

  3. 3

    一页 django 中的两个视图

  4. 4

    Angular.js-如何将两个不同的链接重定向到同一页面,但在angular.js中显示不同的数据

  5. 5

    如何在同一页面中处理两个不同的数据主属性?

  6. 6

    重定向到Django中的同一页面

  7. 7

    Django-如何在同一页面中使多个对象动态化

  8. 8

    如何将ng-if与filter一起用于过滤记录并在同一页面中显示两个不同的视图?

  9. 9

    区分Django views.py中同一页面上的不同发布请求

  10. 10

    javascript-如何在同一页面,不同的div上加载两个Google图表

  11. 11

    Apex-同一页面上的两个按钮,分支到不同的位置

  12. 12

    如何在Django中添加同一模型的两个不同的整数字段

  13. 13

    django-当form.is_valid()为false时如何返回包含所有数据的同一页面

  14. 14

    Django,在一页上上传两个文件

  15. 15

    在Django-admin中,如何在同一页面中显示外键的外键?

  16. 16

    如何通过在django中使用两个不同的日期进行过滤来获取数据?

  17. 17

    如何从Django中两个不同的表返回数据?

  18. 18

    如何编写两个链接到同一页面的不同作业?

  19. 19

    如何使用htaccess使用不同的URL呈现同一页面

  20. 20

    如何从不同的get请求呈现同一页面?

  21. 21

    如何使用htaccess使用不同的URL呈现同一页面

  22. 22

    Django:重定向仍保留在同一页面中

  23. 23

    使用 Django、Python 和 MongoDB 在同一页面中导航

  24. 24

    同一页面中的两个ui视图AngularJs

  25. 25

    同一页面中的两个ui视图AngularJs

  26. 26

    找出两个URL是否导航到同一页面

  27. 27

    Django:两个不同的子类指向同一个父类

  28. 28

    通过Django中同一页面上的多个按钮启动AJAX请求

  29. 29

    Django:使用 POST 处理表单到同一页面的正确方法

热门标签

归档