我正在通过Django工作,到目前为止真的很喜欢它,但我有一个问题,我不确定解决它的典型方法。
假设我有一个View,当一些复杂的Python对象被更新时应该更新,但是这个对象不是由数据库驱动的,比如它是由AJAX调用驱动的,或者是由用户直接驱动的。
此代码在哪里?它还应该进入models.py ????
答案 0 :(得分:36)
您的models.py
可能(有时是)为空。您没有义务拥有映射到数据库的模型。
你仍然应该拥有一个models.py
文件,以使Django的管理员满意。 models.py
文件名很重要,拥有空文件比尝试更改各种管理命令所需的文件更容易。
“模型” - 通常 - 不必映射到数据库。 “模型” - 作为MVC设计的一般组成部分 - 可以是任何东西。
您可以 - 并且经常 - 定义您的视图使用的自己的“模型”模块。 只是不要将其称为models.py
,因为它会让Django管理员感到困惑。将其称为对您的应用程序有意义的内容:foo.py
。这个foo.py
操纵支持你的应用程序的真实事物 - 不一定是Django Model.model
子类。
Django MVC不需要数据库映射。 它明确地期望名为models.py
的模块中包含数据库映射。因此,如果没有实际的数据库映射,请使用空models.py
。
您的views.py
可以使用
import foo
def index( request ):
objects = foo.somelistofobjects()
*etc.*
Django允许您轻松使用无数据库映射。你的模型很容易成为任何东西。只是不要称它为models.py
。
修改强>
视图是否已在模型中注册?否。
在控制器更新模型后,视图会收到通知吗?否。
模型是严格的数据表示,因为这真的是MVP吗?是。
阅读Django文档。这很简单。
网络请求 - >网址映射 - >查看功能 - >模板 - >响应。
视图功能可以使用该模型。模型可以是数据库映射,也可以是任何其他东西。