Django 和通用视图

Posted

技术标签:

【中文标题】Django 和通用视图【英文标题】:Django and Generic Views 【发布时间】:2009-05-21 14:12:23 【问题描述】:

我已经在 Django 中非常成功地编写了一个完整的应用程序,但是我有一个烦人的问题,我想我知道答案,但我只是想确定一下。

我真正喜欢 Django 的一件事是数据模型和不必做“显而易见”的事情的能力。例如,我们在应用程序中广泛使用管理界面。我不需要为每个模型编写编辑屏幕并在每次模型更改时保持最新状态,这一点非常棒。

让我感到困惑的是,我想让应用程序的一部分呈现模型的“只读”版本。本质上,我想要我在管理界面中拥有的东西,但没有可编辑的小部件。现在我注意到,从 Django 代码中,该管理界面实际上通过并替换了小部件以使用可编辑的小部件,因此我知道肯定存在不可编辑的。

但据我所知,没有办法只说“渲染这个对象”并让 Django 做“显而易见”的事情并像在管理界面中那样渲染它,但使用不可编辑的字段。我觉得这很难相信,因为它看起来像 a)这比管理的东西更容易,并且 b)我知道小部件已经在那里。但是我已经看遍了,甚至 Django 示例似乎总是创建一个模板并准确地说明页面应该是什么样子。

一般来说,编写模板可能是一个好主意,但在开发早期,当事情发生变化时,最好有一些东西,只做一些基本的事情,考虑到模型中可用的信息。

我错过了什么吗?对不起,如果这是一个愚蠢的问题。

【问题讨论】:

这个问题真的是“为什么没有通用视图函数的通用模板?” 【参考方案1】:

难道大多数非玩具网站都想要自定义布局/html

或者,您在寻找Databrowse?

【讨论】:

我完全同意,非玩具网站需要自定义布局和 HTML。我不希望这对抛光网站有用。我只是希望我主要将它用于开发,甚至在奇怪的“没那么重要”的情况下。基于对文档的快速浏览,databrowse 看起来非常像我正在寻找的东西。我认为它必须存在,但我从未在我所拥有的书中(这本书在 v0.96 上已经过时)或我阅读的任何教程材料中看到它。我想像这样的东西存在。当你不知道它叫什么时,最终很难找到它。 是的,如果有 databrowse 的文档就好了。欢迎补丁,我敢肯定:-)【参考方案2】:

我用过这样的东西:http://www.djangosnippets.org/snippets/937/

如果您在 Google 上搜索“django read-only admin”或类似内容,还有其他类似的东西。

永远不要低估 Django Admin 的灵活性......

【讨论】:

以上是关于Django 和通用视图的主要内容,如果未能解决你的问题,请参考以下文章

Django 基于类的通用视图和身份验证

Django 和通用视图

urls.py 中的 Django 时区逻辑和通用视图引发错误,但它是视图、字段还是我?

如何自动化 django 通用视图的 url?

使用通用 PasswordChangeForm Django 视图渲染时捕获 NoReverseMatch

Django 中的自定义与通用视图