Im来自于使用其他基于MVC的框架,而进入Django,对于Im过去的做法似乎有点尴尬。例如,在其他基于MVC的框架中。我的布局可能是这样的:
root:
- config (houses the config files (like settings), url.conf, db connections, etc.)
- controllers (houses the main logic of each section of the site. The middle ground between views and models)
- models (handles all the data to be validated and anything that interacts with the database. declares the DB structure. each model a class, each attribute a db field. in django, a template?)
- views (the html displayed to the end user, put together by the controllers)
- tests (all the tests)
- plugins (3rd party apps you install into yours.)
- uploads (user uploaded files)
- public_html (the actual public facing files)
-\ css|js|img (the various static file types for page manipulation)
-\ index.html
这就是我过去的习惯,看起来django做的事情很不一样。以前如果我有一个投票应用,我会有:
controllers/PollController.py
models/Poll.py
views/poll/index.py
这将在数据库中创建poll表。但在Django,我该怎么做?这个布局可以接受吗?从我所读到的内容来看,上面的内容更像是这样:
root:
- project (this would be the main app, and what glues everything together)
--/ settings.py
--/ urls.py
--/ templates/
- apps
-/ Poll
--/ models.py (i would have no Poll.py model, so it would all go in here)
--/ urls.py (any url.conf specific to this model would go in here)
--/ templates/ (the various views for this app)
虽然这在某些方面是有道理的,但它只是让我觉得陌生。与第一个示例中描述的传统mvc布局相比,这种布局有什么好处吗?除此之外还有其他首选布局吗?这个“项目”的目的是,核心将是一个基本框架,供我自己使用,我有几个不同的“应用程序”,我将为每个使用这个框架创建。在旧版本中,每个应用程序只是通过作为该目录中的插件来扩展主应用程序。
作为一个背景说明,我的大部分经验是在php和来自那个worls的各种框架(cakephp,yii,主要是),如果这有什么不同的话。这将是我在python/django中的第一个主项目。我只想把事情做好。
是的。
你所说的“传统MVC”只是另一个框架。这不是神奇的更好或更正确。只是不同而已。
可能有数百种方法可以做到这一点。Django选择了一个非常适合Python和web应用程序的。
那就这样做。
抛弃你做过的其他事情留下的成见。
像一个完全的初学者一样,用Django重新开始。
在你学习了第六个框架之后,你就可以(而且只有在那时)比较和对比你所学的六个框架。在你学会六个之前,每一个都必须被视为新的、完整的、不同的和独特的。
不要比较和对比。
就把Django当成Django,用Django的方式做事。
(关于更多的隐喻性建议,请阅读Django Reinhardt的音乐;他对吉他有独特的看法和方法。)
注释
根不代表什么
配置——不存在。
控制器——不存在。
模型——一个Python模块,具有持久对象的类定义。映射到RDBMS架构。可以进行特定于模型的测试。
视图——一个Python模块,它具有响应请求和创建响应的视图函数。
test——具有视图特定和模板特定测试的Python模块。
插件——不存在。
上传——运行时,而不是应用程序的开发。
公共html——不存在。
css | js | img—静态“媒体”文件。运行时,而不是开发。
index.html——不存在。
你漏掉的东西
模板——您的HTML模板页面,由视图函数使用。
admin——默认管理站点的管理绑定。依赖于模块和表单。
表单——表单定义;这些是生成用于输入验证的表单的类。
URL——从URL路径到视图函数的映射。
设置—具有默认数据库配置、中间件等的模块。
最大的好处是应用程序是模块化的。您可以通过删除一个目录来删除投票应用程序,而不是通过几个目录来删除每个条目。另一方面,如果你在某个地方找到了一个你想使用的投票应用程序,你可以直接放在一个文件夹里,你就可以走了。
如果你认为一个网站是由几个单独的、主要是不同的“应用程序”和一些胶水组合而成的,那么这个组织就更有意义了。
相关问题 更多 >
编程相关推荐