MVC和django基本面

时间:2008-12-12 20:22:29

标签: python django django-models django-templates

这个场景很新,并试图找到一些文档来采用最佳实践。我们正在构建一个相当大的内容网站,其中包含各种媒体目录,我正在尝试找到一些类似的数据/架构模型,以便我们可以更好地了解我们应该使用的方法,使用我们从未使用的框架利用之前。任何见解/帮助将不胜感激!

3 个答案:

答案 0 :(得分:16)

“数据/架构模型,以便我们可以使用我们之前从未使用的框架更好地了解我们应该使用的方法”

Django对您施加最佳实践。你没有很多选择,也不会犯很多错误。

MVC(虽然是一种崇高的愿望)实施如下:

  • 使用Django ORM模型在“models.py”文件中定义数据。
  • urls.py文件将URL映射到视图功能。明智地选择你的网址。
  • 查看功能完成所有处理,利用模型中的模型和方法
  • View功能调用的演示文稿(通过HTML模板)。基本上没有可以在演示中进行处理,只需轻量级迭代和决策

为您定义模型。坚持Django自然而然地做的事情,你会很开心。

在架构上,你通常有这样的堆栈。

  • Apache做了两件事。

    • 直接立即提供静态内容
    • 将动态URL交给Django(通过mod_python,mod_wsgi或mod_fastcgi)。 Django应用程序映射URL以查看功能(访问数据库(通过ORM /模型)并通过模板显示。
  • Django视图函数使用的数据库。

该架构为您定义明确。坚持Django自然而然地做的事情,你会很开心。

随时阅读Django documentation。它很棒;也许是最好的。

答案 1 :(得分:5)

首先,忘记所有的MVC口头禅。拥有一个好的分层结构很重要,但MVC(最初定义的)不是一个,它是一个模块化结构,其中每个 GUI 模块在这些树中分开子模块。这里无需在网上使用。

在Web开发中,拥有一个分层结构确实是值得的,其中最重要的层是存储/建模层,后来被称为模型层。最重要的是,你需要一些其他层,但它们真的不像GUI世界中的视图和控制器。

Django图层大致是:

  • 存储/建模:models.py,显然。尝试将大多数“工作”概念放在那里。所有的关系,所有的操作都应该在这里实现。
  • 调度:主要在urls.py.在这里,您将URL方案转换为代码路径。把它想象成一个大的switch()语句。努力拥有可读的URL,这些URL映射到用户意图。它将有助于添加新功能或新方法来做同样的事情(如后来的AJAX UI)。
  • 收集:主要是视图函数,包括你的和预构建的通用视图。在这里,您只需从模型中收集所有内容即可满足用户请求。在很多情况下,它只需选择一个模型实例,其他所有内容都可以从关系中检索出来。对于这些URL,通用视图就足够了。
  • 演示文稿:模板。如果视图为您提供所需的数据,则将其转换为网页非常简单。在这里你会感谢模型类有很好的访问器来从任何给定的实例获取任何类型的相关数据。

答案 2 :(得分:0)

要了解django fundementals和django对MVC的看法,请参阅以下内容: http://www.djangobook.com/

作为一个让你的手弄脏的起点...... “......试图找到一些可比较的数据/建筑模型”

这是一种快速而又脏的方法来反向工程数据库以获取models.py文件, 然后你可以检查看看django将如何处理它。

1。)获得与您的目标非常匹配的图表。例如像这样的东西     http://www.databaseanswers.org/data_models/product_catalogs/index.htm

2。)从er图创建一个sql脚本并创建数据库,     我建议Postgre,就像一些MySQL     表类型不会有forgien键约束,但在一个捏MySQL或SQLITE     会做的

3.。)创建并配置django应用程序以使用该数据库。然后运行:      python manage.py inspectdb

这至少会为您提供一个models.py文件,您可以阅读该文件以了解django的尝试方式 模仿它。

请注意,inspect命令旨在成为处理遗留的快捷方式 数据库在django开发时,并不是完美的。一定要阅读 在尝试此之前:  http://docs.djangoproject.com/en/dev/ref/django-admin/#ref-django-admin