Django - 是否可以在加载起始页面之前显示加载程序?

时间:2017-05-23 13:34:12

标签: django

我的视图功能需要很长时间才能返回模板。所以,我想在运行该功能时向用户展示一些东西。 是否可以在加载起始页面之前显示加载程序? 重要的是在第一次访问用户后加载第一页时应该显示加载程序吗?

感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:1)

您必须使用JS获取页面。您可以使用类似IntercoolerPJAX的内容,它提供HTML属性,在通过AJAX加载内容时显示旋转动画。

更好的解决方案是让您的网页更快。您应该考虑以下几点:

  1. 检查您用于过滤或排序的所有模型字段是否已设置db_index=True,除非表格很小(几百个条目)或字段已经是唯一或外键/主键。还要检查你的数据库是否在RAM中进行排序和合并而不是在磁盘上(==数据库有足够的RAM资源,并且还有正确的配置来使用它)。

  2. 有时,如果您显示模型实例列表,则最终会在模板中访问相关模型时每行单独生成数据库请求。再次,检查数据库执行哪些语句,并查看Django的select_relatedprefetch_relatedvaluesvalues_list方法,这些方法可以显着提高查找性能。确保您的模板上下文包含所有必要的数据和仅包含必要的数据(例如,分页,多少,或者您应该考虑像SOLR或Elastic这样可以通过Django Haystack很好地集成的搜索索引)。

  3. 在主视图中同时加载除重数据之外的所有内容,其中还包括JS。然后,JS使用AJAX从第二个Django视图加载其余部分,该视图返回一个JS片段,您的JS只是添加到DOM中。

  4. 这实际上取决于你对JS的满意程度以及你想坚持多少HTML以尽可能多地使用Django(例如,考虑Django Forms)。但首先,tune your DB setup(免责声明:我写过那篇文章)。