我只是在通过 Django 工作,到目前为止真的很喜欢它,但是我有一个问题,我不确定解决它的典型方法是什么。
假设我有一个视图,当一些复杂的 Python 对象被更新时,它应该被更新,但是这个对象不是由数据库驱动的,比如说它是由 AJAX 调用或直接由用户或其他东西驱动的。
这段代码去哪儿了?它还应该放在models.py中吗????
我只是在通过 Django 工作,到目前为止真的很喜欢它,但是我有一个问题,我不确定解决它的典型方法是什么。
假设我有一个视图,当一些复杂的 Python 对象被更新时,它应该被更新,但是这个对象不是由数据库驱动的,比如说它是由 AJAX 调用或直接由用户或其他东西驱动的。
这段代码去哪儿了?它还应该放在models.py中吗????
你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 映射 -> 视图函数 -> 模板 -> 响应。
该模型可以被视图函数使用。模型可以是数据库映射,也可以是任何其他东西。