如何为未来的变化准备一个django项目

tho*_*mad 8 python database django

当我在我的第一个django支持的网站上工作时,我不断学习新的东西,并在我去的时候对我的应用程序进行各种更改和添加.我尝试遵循DRY和pythonic原则,并且在编码时要聪明,但最终我必须把网站带到现场,并且确定在我做完之后不久,新的和退出的东西将会出现在管道上,我将要实现它.

为未来做准备:

考虑到这一点,做乡亲有关于我如何准备我的代码的任何建议,现在要为未来做好准备,尽可能为这些不可预见的当前/未知升级/添加到我的代码库?

后见之明是20/20:

你希望你在一开始就做了什么,这会让你的网站在你的网站启动和运行时变得更轻松?

我学到的小事(例子):

  • 使用UTC作为默认时区(并使用datetime.datetime.utcnow())
  • 使用South来帮助未来的数据库更改(尚未完成,但看起来很明智)
  • 我的模板中没有硬代码链接(使用get_absolute_url()和反向查找)
  • 创建一个单独的tools应用程序,以包含我可能希望在将来的项目中使用的小型可重用模板标签和实用程序功能(以后不需要将它们分离)

这些是小技巧,有些直接来自django-docs,但我认为它们有所帮助.

你呢?对于为未来做好准备的新应用或项目,您的最佳做法是什么?

Edw*_*ale 8

  • 使用virtualenv部署到纯环境中.
  • 使用pip需求文件记录需求.

我相信其他人会建议他们的部署策略,但是对我来说这些改变是非常积极的.


Pau*_*lan 7

一开始就学习并使用South,因此当您进行主要的数据库架构更改时,您将拥有一个迁移工具.否则,你会发现你最终并排运行两个版本,同时试图弄清楚如何移植数据,它变得非常混乱.

http://south.aeracode.org/

  • 在数据库中有要保留的数据之前,请不要使用South.首次部署之前无需迁移. (2认同)

Dom*_*ger 5

不确定这与Webfaction的精彩世界之间有多相关.

使用Django从Django的svn存储库中检出,而不是在创建Django应用程序时为您安装的任何主机,因此您可以通过运行来更新Django以获得安全修复程序svn up.

几天前我不得不这样做,虽然它不是太痛苦(删除Django安装,然后运行SVN结账,然后重新启动Apache),为我所有的各种项目做这件事有点恼火 - 本来是跑步更快乐svn up.