Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为Django应用程序的搜索引擎提供建议_Python_Django - Fatal编程技术网

Python 为Django应用程序的搜索引擎提供建议

Python 为Django应用程序的搜索引擎提供建议,python,django,Python,Django,我有一个带有搜索页面的应用程序。用户将能够在多个表中进行搜索。然而,我担心这会给服务器带来巨大的成本 ads_list = advertisements.filter(Q(title__icontains=words) | Q(street_name__icontains=words) | Q(city__in=city.filter(Q(name__icontains=words) | Q(rel

我有一个带有搜索页面的应用程序。用户将能够在多个表中进行搜索。然而,我担心这会给服务器带来巨大的成本

ads_list = advertisements.filter(Q(title__icontains=words) | Q(street_name__icontains=words) |
                                                 Q(city__in=city.filter(Q(name__icontains=words) | Q(related_names__icontains=words) | Q(post_code=words) | Q(region__icontains=words))) |
                                                 Q(state_category__in=state_category.filter(Q(category_name__icontains=words) | Q(search_tags__icontains=words))) |
                                                 Q(advertisement_type__in=advertisement_type.filter(Q(type_name__icontains=words) | Q(search_tags__icontains=words))))
在搜索页面中,我使用
digg\u paginator
传播结果

我的问题是:这些结果是由Django缓存的,还是每次用户点击“下一页”按钮时都会进行新的查询? 我想知道我是否应该实施并尝试自己处理它,但我不知道Django是否已经做得比我更好了。
我还将尝试每页提供更多更好的结果,这样用户就不会经常更改页面。

这些结果是由Django缓存的还是每次用户点击“下一页”按钮时都会进行新的查询?

这取决于按钮按下的方式。如果您的按钮按下调用了Django视图,并且您依赖于Django的paginator,那么Django将在每次按下按钮时查询您的数据库

如果要减少对数据库的查询,我可以想到两种方法:

  • 在客户端使用javascript处理分页。按下按钮将调用Django视图,该视图将向客户端返回完整的结果集。然后,客户端将使用javascript将结果分割到多个页面,并通过分页提供对所述页面的访问

  • 使用Django的缓存框架。您可以设置Redis服务器并配置Django以将其用于缓存。然后更新视图以使用
    cache\u页面
    decorator。请在此处阅读更多信息:


  • 缓存解决方案看起来很有趣。我会调查的。谢谢