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

发布于 2021-01-29 15:17:44

到目前为止,我只是通过Django进行工作,并且确实很喜欢它,但是我有一个问题,我不确定解决该问题的典型方法。

假设我有一个View,应该在更新某些复杂的Python对象时更新该View,但是该对象不是由数据库驱动的,也就是说它是由AJAX调用驱动的,或者由用户或其他东西直接驱动的。

该代码在哪里?它应该仍然放在models.py中吗????

关注者
0
被浏览
187
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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映射->视图功能->模板->响应。

    视图功能可以使用该模型。该模型可以是数据库映射,也可以是其他任何东西。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看