非数据库驱动模型的Django MVC模式?
到目前为止,我只是通过Django进行工作,并且确实很喜欢它,但是我有一个问题,我不确定解决该问题的典型方法。
假设我有一个View,应该在更新某些复杂的Python对象时更新该View,但是该对象不是由数据库驱动的,也就是说它是由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映射->视图功能->模板->响应。
视图功能可以使用该模型。该模型可以是数据库映射,也可以是其他任何东西。