Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MVC和django基础_Python_Django_Django Models_Django Templates - Fatal编程技术网

Python MVC和django基础

Python MVC和django基础,python,django,django-models,django-templates,Python,Django,Django Models,Django Templates,这是一个非常新的场景,试图找到一些文档来采用最佳实践。我们正在建设一个相当大的内容网站,它将由各种媒体目录组成,我正在尝试寻找一些可比较的数据/架构模型,以便我们能够更好地了解我们应该使用的方法,使用一个我们从未使用过的框架。如有任何见解/帮助,将不胜感激 “数据/架构模型,以便我们能够更好地了解我们应该使用的方法,使用我们以前从未使用过的框架” Django将最佳实践强加给您。你没有很多选择,也不会犯很多错误 MVC(一种崇高的理想)的实施如下: 数据是使用Django ORM模型在“mod

这是一个非常新的场景,试图找到一些文档来采用最佳实践。我们正在建设一个相当大的内容网站,它将由各种媒体目录组成,我正在尝试寻找一些可比较的数据/架构模型,以便我们能够更好地了解我们应该使用的方法,使用一个我们从未使用过的框架。如有任何见解/帮助,将不胜感激

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

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

MVC(一种崇高的理想)的实施如下:

  • 数据是使用Django ORM模型在“models.py”文件中定义的
  • py文件将URL映射到视图函数。明智地选择你的URL
  • View函数利用模型中的模型和方法进行所有处理
  • 视图函数调用的表示(通过HTML模板)。基本上,在表示中不能进行任何处理,只能进行轻量级迭代和决策
模型是为您定义的。只要坚持Django自然做的事情,你就会快乐

在架构上,您通常有这样一个堆栈

  • Apache做两件事

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

该体系结构为您定义良好。只要坚持Django的自然做法,您就会感到高兴


请随意阅读。它很棒;也许是最好的。

首先,忘记所有MVC咒语。拥有一个好的分层结构很重要,但是MVC(如最初定义的那样)不是一个,它是一个模块化的结构,其中每个GUI模块被拆分到这些树型子模块中。这里没有什么可在web上使用的

在web开发中,有一个分层结构是值得的,其中最重要的一层是存储/建模层,它被称为模型层。除此之外,您还需要一些其他层,但它们与GUI世界中的视图和控制器完全不同

Django层大致如下:

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

要了解django fundementals和django对MVC的看法,请参考以下内容:

作为让你的手沾污的起点。。。 “…试图找到一些可比较的数据/架构模型”

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

1.)获得一个与目标非常匹配的er图。举个例子

2.)从er图创建sql脚本并创建数据库, 我建议Postgre,比如一些MySQL 表类型将不具有forgien键约束,而是在一个MySQL或SQLITE中 行

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

这将至少为您提供一个models.py文件,您可以读取该文件以查看django是如何尝试的 为它建模

请注意,inspect命令旨在作为处理遗留问题的快捷方式 在django中开发时,数据库是不完善的。一定要看报纸 尝试此操作之前,请执行以下操作:

如果您关心性能或内存使用,通常最好使用单独的轻量级Web服务器(如Nginx)来提供静态内容,而不是同时使用Apache(尽管如果在守护程序模式下使用mod_wsgi和Apache worker MPM,您可以获得类似的效果)。@Carl Meyer:或lighttpd提供静态内容。