如何在django中编写可重用的视图?

时间:2010-03-31 03:25:09

标签: python django views

这些是我经常使用的技术,可以重复使用我的观点:

  • 将template_name作为带有默认值
  • 的参数
  • 选择一个可选的extra_context,默认为空{}
    • 在呈现模板之前,使用extra_context
    • 更新上下文
    • 为了进一步重用,请调用extra_context.values()
    • 中的任何可调用对象
  • 每当视图处理一个查询集时,都会有一个带有默认值
  • 的queryset参数
  • 每当视图需要来自ORM的特定对象时,它会尝试以多种方式使用任何“id”参数来获取它(例如,作为slug,作为数据库ID)(这可能是一种不好的做法......)

首先,我应该在列表中添加任何内容吗?我应该从列表中删除任何内容吗?

这些物品可容纳大量案件。但是,每当应用程序以某种方式扩展另一个模型时(例如,添加字段或以某种方式更改行为),我最终会编写自己的视图并仅重用该模型。这是正常的吗?

部分编辑/回答我自己的问题:

  • 信号:视图在启动时应发出信号,在响应之前发出信号

2 个答案:

答案 0 :(得分:0)

我认为所有这些都会给你的urlconf带来很大的负担,使一切正常。也许制作一个功能,将所有这些功能和硬编码视图作为围绕所述功能的美化包装将会更好。

答案 1 :(得分:0)

  

每当视图需要ORM中的特定对象时,它会尝试以多种方式使用任何“id”参数来获取它(例如,作为slug,作为数据库ID)(这可能是一种不好的做法......)

那么......为什么不只是期望将模型实例作为参数传入?或者从中获取元素0的QuerySet?然后,您可以将它与QuerySet案例结合使用,并可以将其转换为get_object_or_404

我的建议是看看Django的通用视图是如何编写的。他们正在解决你遇到的同类问题。除了最后一部分,你似乎大部分都在那里。