【发布时间】:2010-10-22 00:01:39
【问题描述】:
短版:
是否有一种简单的内置方法来识别 Django 模板中的调用视图,而无需传递额外的上下文变量?
长(原始)版本:
我的一个 Django 应用程序有几个不同的视图,每个视图都有自己命名的 URL 模式,它们都呈现相同的模板。有非常少量的模板代码需要根据被调用的视图进行更改,太小以至于不值得为每个视图设置单独的模板的开销,所以理想情况下我需要找到一种方法来识别模板中的调用视图.
我尝试设置视图以传递额外的上下文变量(例如“view_name”)来识别调用视图,并且我还尝试使用{% ifequal request.path "/some/path/" %} 比较,但这些解决方案似乎都不是特别优雅。有没有更好的方法来从模板中识别调用视图?有没有办法访问视图的名称或 URL 模式的名称?
更新1:关于这只是我对MVC的误解的评论,我理解MVC,但是Django's not really an MVC framework。我相信我的应用程序的设置方式与 Django 对 MVC 的看法是一致的:视图描述 哪些 数据呈现,模板描述 如何 呈现数据。碰巧我有许多准备不同数据的视图,但它们都使用相同的模板,因为所有视图的数据都以相同的方式呈现。我只是在寻找一种简单的方法来从模板中识别调用视图(如果存在)。
更新 2: 感谢您的所有回答。我认为这个问题被过度思考了——正如我原来的问题中提到的那样,我已经考虑并尝试了所有建议的解决方案——所以我现在将它提炼成一个“简短版本”,现在位于问题的顶部.现在看来,如果有人只是简单地发布“不”,那将是最正确的答案:)
更新 3: Carl Meyer 发布了“否”:) 再次感谢大家。
【问题讨论】:
-
我不确定我是否能想到不同视图应该调用同一个模板的原因?你能详细说明吗?我认为这可能是您误解了 MVC 概念的情况
-
感谢您的评论。每个视图执行不同的 ORM 查询,但所有输出都采用相同的格式,因此为了 DRY 使用了通用模板。我已经用更多细节编辑了这个问题。
-
我会向模板传递一个额外的上下文变量。简单,不费吹灰之力的解决方案。为什么不呢?
标签: django