24

我只是在通过 Django 工作,到目前为止真的很喜欢它,但是我有一个问题,我不确定解决它的典型方法是什么。

假设我有一个视图,当一些复杂的 Python 对象被更新时,它应该被更新,但是这个对象不是由数据库驱动的,比如说它是由 AJAX 调用或直接由用户或其他东西驱动的。

这段代码去哪儿了?它还应该放在models.py中吗????

4

1 回答 1

37

models.py可以(有时是)空的。您没有义务拥有映射到数据库的模型。

你应该还有一个models.py文件,让 Django 的管理员满意。models.py文件名很重要,拥有一个空文件比尝试更改各种管理命令所期望的文件更容易。

“模型”——通常——不必映射到数据库。“模型”——作为 MVC 设计的通用组件——可以是任何东西。

您可以——并且经常这样做——定义您自己的视图使用的“模型”模块。 只是不要调用它,models.py因为它会使 Django 管理员感到困惑。 称它为对您的应用程序有意义的东西: foo.py. 这foo.py操纵了支撑您的应用程序的真实事物——不一定是 DjangoModel.model子类。

Django MVC 不需要数据库映射。 它确实明确期望命名的模块models.py中有一个数据库映射。models.py因此,如果您没有实际的数据库映射,请 使用空。

views.py可以使用

import foo

def index( request ):
    objects = foo.somelistofobjects()
    *etc.*

Django 允许您在没有数据库映射的情况下轻松工作。您的模型可以很容易地成为任何东西。只是不要调用它models.py


编辑.

视图是否在模型中注册?不。

在控制器更新模型时,视图会得到通知吗?不。

模型是否是严格意义上的数据表示,因为这真的是 MVP?是的。

阅读 Django 文档。这很简单。

Web 请求 -> URL 映射 -> 视图函数 -> 模板 -> 响应。

该模型可以被视图函数使用。模型可以是数据库映射,也可以是任何其他东西。

于 2009-08-17T23:07:15.450 回答