Django 1.6 最佳实践: 最佳Django开发环境设置

在我们的博客中, 记录了我们在开发过程中所使用的技术和遇到的问题, 希望作为其他开发和设计者的一个学习交流平台.

Django 1.6 最佳实践: 最佳Django开发环境设置


在本节中, 我们将介绍最佳的本地开发环境设置

1. 在开发和部署服务器中使用相同的数据库

可能有些开发者喜欢在本地开发Django程序时, 使用SqLite3数据库, 而在部署时使用PostgreSQL数据库(或任何不同于SqLite3的数据库). 但这一做法应当避免, 因为我们是希望不同的数据库表现的一致, 这显然是不现实的.

以下是一些我们使用不同数据库进行开发和部署时遇到的问题:

Fixtures不是解决方法

或许你会想, 我们为何不能用fixtures来弥补不同数据库的不同呢? 是的, fixtures能用于创建简单的手写的测试数据, 它能在开发时填充进许多假的数据, 尤其是在开发初期阶段.

但是, fixtures对于从一个数据库到另一个未知数据库的大数据迁移而言, 并不是一个可靠地工具. 它本身也不是为了这一目的而设计的, 我们不应该将创建基本数据和数据迁移的用法混淆.

无法本地测试部署后数据

当你的本地数据库和部署数据库不同时, 你无法创建一个和部署服务器完全一样的拷贝进行测试. 当然你可能会觉得使用dump将数据完全拷贝出来放到本地数据库中测试, 但是这也无法保证导出和导入后的数据是完全一样的.

不同数据库拥有不同的数据类型

请牢记, 不同的数据库处理数据的类型是不同的! Django的ORM试图统一这些不同, 但毕竟所能实现的效果是有限的. 比如, 在使用SqLite3作为测试数据库, 而使用PostgreSQL作为部署数据库时, 由于SqLite3是动态, 弱类型数据库, 而PostgreSQL则是强类型数据库, 虽然程序在测试服务器上运行正常, 但最终可能导致在部署服务器上出现问题.

2. 使用Pip和Virtualenv

如果你还没有使用Pip和Virtualenv, 那么, 我们强烈推荐你现在就开始熟悉并使用Pip和Virtualenv. Pip和Virtuaenv是Django项目的标准配置, 并且大多数开发者依赖这两个工具.

Pip是从Python Package Index下载Python模块的工具, 更是管理和安装Python模块的不二选择. 它有点像easy_install, 但具有更多的功能, 其中最重要的就是对于Virtualenv的支持

Virtualenv是创建独立的Python开发环境, 管理模块依赖性的工具. 当我们同时开发多个项目时, 且这些项目使用的库或模块都有所不同时, 它可以帮助我们轻松的在这些独立开发环境质检切换. 当然为了方便使用Virtualenv, 我们可以借助virtualenvwrapper. virtualenvwrapper为我们提供了诸多命令, 方便我们使用Virtualenv

3. 使用Pip安装Django和其他依赖库

Django官网提供了多种安装Django的方式, 但我们推荐使用pip来安装Django和其他项目依赖模块.

简单而言, 每个Django项目都需要一个requirements文本文件, 其中罗列了所有本项目中使用到的Python模块, 每条信息包括了模块的名字和版本号. 我们就使用pip将这些requirements安装到项目的virtualenv中, 具体的说明我们会在将来谈到requirements时做一个详细的介绍.

4. 使用版本控制系统

版本控制系统又叫源代码管理系通, 在进行任何语言的编程时, 你都应当使用版本控制系统来管理跟踪你的源代码. 如果你不了解的话, 可以搜索一下, 应该能找到各版本控制系统的详细比较.

在所有的版本管理系统中, 我们推荐使用git. 因为第一, git似乎是现在最为流行的版本控制系统, 第二它可以方便的建立和合并分支.

在使用版本控制软件的同时, 我们推荐使用GitHub或Bitbucket作为在线的源代码仓库, 用于备份源代码仓库.

5. 试着使用Vagrant

Vagrant是一个用于创建, 设置和管理开发环境的工具. Vagrant借助VirtualBox等虚拟化工具, 可以轻松的创建我们需要的虚拟机开发环境. 例如, 我们的开发环境是OS X, 而部署环境是Ubuntu时, 我们就可以使用Vagrant创建一个Ubuntu虚拟机, 并在其中配置好开发环境. 详细的介绍, 我们会在将来讲到开发环境时再谈.


原文链接: http://www.weiguda.com/blog/4/