8

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

4

3 回答 3

16

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

Django 将最佳实践强加给您。你没有很多选择,也不能犯很多错误。

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

  • 使用 Django ORM 模型在“models.py”文件中定义数据。
  • urls.py 文件将 URL 映射到视图函数。明智地选择您的网址。
  • 视图函数做所有处理,利用模型和模型中的方法
  • View 函数调用的演示文稿(通过 HTML 模板)。本质上不能在presentation中做任何处理,只是轻量级的迭代和决策

该模型是为您定义的。只要坚持 Django 自然做的事情,你就会很开心。

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

  • Apache 做了两件事。

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

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

随意阅读Django 文档。太棒了;也许是最好的。

于 2008-12-12T20:37:36.183 回答
5

首先,忘记所有 MVC 口头禅。拥有良好的分层结构很重要,但 MVC(如最初定义的那样)不是一个,它是一种模块化结构,其中每个GUI模块都拆分为这些树子模块。这里没有什么可以在网上使用的。

在 Web 开发中,分层结构确实很划算,其中最重要的层是存储/建模层,后来被称为模型层。最重要的是,您需要一些其他层,但它们实际上与 GUI 世界中的视图和控制器不同。

Django层大致是:

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

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

作为开始着手处理......“......试图找到一些可比较的数据/架构模型”

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

1.) 获得与您的目标密切匹配的 er 图。例如像这样 http://www.databaseanswers.org/data_models/product_catalogs/index.htm

2.) 从 er 图中创建一个 sql 脚本并创建数据库,我建议使用 Postgre,因为某些 MySQL 表类型不会有 forgien key 约束,但在紧要关头 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

于 2008-12-12T22:56:05.983 回答