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函数使用.模型可以是数据库映射,也可以是任何其他东西.