用于非数据库驱动模型的Django MVC模式?

Dev*_*Dev 22 python django model-view-controller models

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

假设我有一个View,它应该在更新某个复杂的Python对象时更新,但是这个对象不是由数据库驱动的,比如它是由AJAX调用驱动的,或者是由用户直接驱动的.

这段代码在哪里?它还应该进入models.py ????

S.L*_*ott 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.*
Run Code Online (Sandbox Code Playgroud)

Django允许您轻松地使用没有数据库映射.你的模型很容易成为任何东西.只是不要打电话models.py.


编辑.

视图是否已在模型中注册?没有.

在控制器更新模型时,会通知视图?没有.

模型是严格的数据表示,因为这真的是MVP吗?是.

阅读Django文档.这很简单.

Web请求 - > URL映射 - >查看功能 - >模板 - >响应.

该模型可由view函数使用.模型可以是数据库映射,也可以是任何其他东西.

  • 很公平,但显然你必须以Django不标准的方式工作才能这样做.当然,我也已经在其他框架中看到了这一点.我认为他们通过引入"模型类"的概念,已经完成了对易受影响,缺乏经验的Web开发人员的服务.大多数情况下,这些实际上是*entity*类.我甚至不同意应该有类似模型类的东西,模型处于更高的抽象层次.也许是模型外观,但模型类,没有.无论如何,这是我的宠儿,我想我是MVC纯粹主义者或其他什么. (3认同)