什么是良好的Django工作流程?

时间:2011-03-11 03:16:48

标签: python django

我是Python和Django的初学者。

在开始新项目时,在深入研究代码之前,您先做了什么?

例如,可以采取以下步骤:

  1. 首先配置settings.py文件
  2. 配置models.py以布置数据结构
  3. 创建模板文件
  4. 定义视图/页面
  5. 执行syncdb
  6. 所以我的问题是,通过Django应用程序所需的步骤是什么样的好工作流程?这也可以作为事情的清单。在Django的权威指南中,作者谈到了自上而下或自下而上的问题。有人可以进一步扩展这个并且可能分享他们的过程吗?

    感谢。

6 个答案:

答案 0 :(得分:18)

遵循敏捷方法。完成一个小案例,从开始到结束。从模型到测试再到用户体验。然后建立它。迭代。

这是软件开发的正确方法。

为了有效地做到这一点,你需要:(不要马上打扰,你需要它。)

自动架构迁移,自动构建系统,自动更新和部署。 - 这些都没有,django有任何关系。适当地使用pipfabrichudsontwillsouth

注意不要立即过度负担所有这些,特别是因为你说,你正在开始。

答案 1 :(得分:8)

  

Django应用程序所需的步骤?

有两个必要步骤。

编写设置。写下urls.py

其余步骤是可选的。

  

这也可作为事情的清单。

糟糕的政策。您不需要Django功能的清单。您需要一组必须实现的用例或用户故事。

出于某种原因,您省略了Django的两个最重要和最有价值的功能。配置默认管理界面和写入单元测试。默认管理界面的价值非常高。单元测试绝对是核心。

你是这样做的。

  1. 收集用例。

  2. 优先使用用例。

  3. 定义演员。演员类成为安全模型中的组。

  4. 定义足够的“应用程序”以满足第一个用例的发布。定义网址结构。酷URL不会改变。

  5. 构建第一个用例:模型(包括安全性),管理员,URL,测试,表单,视图和模板。请注意,除模板外,这些是文件名(models.py,admin.py,...)。另请注意,表单和管理员应在单独的模块中定义,即使这不是必需的。另请注意,模板将在顶级内容的通用模板目录和特定于应用程序的模板之间进行拆分。

  6. 构建第二个用例:模型(包括安全性),管理员,网址,测试,表单,视图和模板。

  7. ...

    <磷>氮。包发布。调整设置。配置数据库和mod-wsgi

答案 2 :(得分:2)

我个人无法在没有撰写观点的情况下制作模板(除非这是一个photoshop草稿),但总的来说,这是我在制定计划后的方式

对我来说非常重要是我不首先潜入代码中,而且我花时间根据“屏幕”或“页面”模拟模型结构用户会看到。

一旦我定义了用户体验,我就确保后端足够强大以处理这种体验。如果我没有想象用户体验,那么在shell中肯定可以完成的细节被遗漏,但对于网站,默认的django admin等来说并不理想。

敏捷开发与庞大规范之间总是存在权衡:我认为这是一个重要的平衡点。敏捷是好的:在编写第一行代码之前,没有必要计划每个细节,因为您的需求会在您结束时发生变化。您不知道用户真正使用该网站的方式。

另一方面,如果没有计划,最终可能会出现影响所有未来代码的混乱基础。

有根据的猜测是一个好的开始。不要考虑或假设太多,但绝对清楚地知道您的用户将如何与您的网站进行第1阶段的互动。

答案 3 :(得分:0)

始终尝试记住干燥规则。例如,为什么要定义每个新视图的RequestContext,你只需编写一次函数,就可以为你添加它。好的描述在another topic

尝试以一种方式编写代码。每次升级视图的架构时,都要在所有已编写的视图中对其进行编辑。这有助于保持代码清晰,为将来节省大量时间。

通常很好的规则,我如何编写我的应用程序是小步骤的规则。首先编写设置和URL,然后添加一个模型和一个视图。当它工作时,修改 - 添加其他模型或其他视图。当你的项目变得越来越大时,你甚至都不会注意到。

最后一个有用的规则,以清楚所有来源。将文件保存在文件夹中如果您有两个基于一个的子网站(例如“accounts”和“blogs”),则创建两个相同的目录名称。记得在每个目录中放置 init .py文件。这真的很容易忘记。通过这种实践,可以轻松编写专用于每个类别的模型和视图。顺便说一下,保持网址结构中的网址是一种很好的做法。主urls.py应该只包含这样的链接:

(r'^accounts/', include('your_main_name.accounts.urls')),

当然还有所有媒体,静态,CSS等。在帐户目录中,网址为:

urlpatterns = patterns('your_main_name.accounts.views',
    url(r'^$', 'index', name='index'),
)

包含所有视图子目录。

最后一个 - 使用实际django版本保持代码清晰。记住,3.0版本即将推出。

希望这会有所帮助。

答案 4 :(得分:0)

我发现我的过程因很多变量而异,主要是我知道某些东西是否有用,或者我是否正在进行实验,以及我是在开发环境中还是在开发环境中进行开发。

例如,我经常直接在部署服务器上进行开发(我的大部分工作都是针对Intranet项目,因此没有任何安全风险等)。但是当我这样做时,我确实需要确保首先设置设置和URL,并配置gunicorn和nginx。

如果我知道某些东西应该工作,或者我正在建立一个通用的基本代码集,有时候我会做所有编码视图和模型的代码,甚至在我获得足够的设置甚至运行开发服务器之前。但是在尝试新代码时,我发现能够测试每一步的方法都很好,所以在这种情况下你需要运行服务器。

一般情况下,我会设置,模型,syncdb,视图,网址,模板,collectstatic,图形/美学

一般情况下,我的base.html非常简单,直到其他一切正常,然后我添加css / js等。

我想我的观点是,对于你如何做到这一点并没有真正错误的答案,甚至没有一个最佳实践(据我所知)。当你做更多的工作时,你会发现你感觉舒服的东西,它甚至会因项目而异。

祝你好运,希望你能学会爱django!

答案 5 :(得分:0)

这是我一般的事情,

  • 配置基本设置
  • 配置root url.py
  • 配置静态(媒体)文件的设置,url.py
  • 创建模型
  • sync db
  • 写视图(如果需要,使用简单模板)

完成后端实施后

  • 考虑UI
  • 准备样式,脚本
  • 开始处理模板实施