Django最佳实践:如果我想同时显示类别列表和搜索表单,我应该使用ListView还是使用普通视图?

2024-04-29 14:00:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读Two Scoops of Django: Best Practices for Django 1.8,其中建议始终使用基于类的泛型视图。在

因此,我试图将显示对象列表(def objects_listing(request))的页面转换为从ListView(class ObjectsList(ListView))派生的类。在

问题是,我的视图不仅需要显示对象列表,而且还需要:

  • 过滤这些对象的搜索表单(链接在同一视图上)
  • 对象类别的列表。在

解决方案似乎是重写函数get_context_data,为模板提供额外的上下文(请参见documentation)。在

我的问题是:在这种情况下使用ListView是否仍然被认为是最佳实践?或者我应该坚持一个正常的观点?这些方法的优缺点是什么?在


ListView的优点:

  • 如果使用GET提供一个page参数,那么paginator在ListView中自动工作。不需要将它传递给paginator对象,也不需要检查用户的疯狂输入:非int值和不存在的页面是自动处理的。这似乎也与DiggPaginator兼容。在

ListView的缺点:

  • 无法访问自我请求(或自我会话)方法之外。在

Tags: of对象django方法视图列表for页面