最优Django环境配置

发布时间:2017-7-9 7:07:09编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"最优Django环境配置 ",主要涉及到最优Django环境配置 方面的内容,对于最优Django环境配置 感兴趣的同学可以参考一下。

2.1 统一使用相同的数据库引擎

一个常见的开发者错误是在本地开发环境中使用SQLite3,而在生产环境中使用PostgreSQL(或MySQL)。本节的提示不仅仅适用于使用SQLite3和PostgreSQL这种种的情景,而是适用于任何你使用两种数据库却希望它们行为特性一致的情景。

下面是一些我们在开发和生产使用不同数据库时碰到的问题:

2.1.1 你不能在本地对线上数据的完整Copy做数据检查

当你的线上生产数据库和你的本地开发测试数据库不一样的时候,你就不能在本地数据库中对线上生产数据库的数据做完全复制,也就无法在本地做完整的数据检查。

当然你可以对线上数据库做一个SQL Dump,然后运行这些SQL把数据导入你的本地数据库,但是这不意味者你通过这样的导入导出得到的是线上数据的完整复制。

2.1.2 不同的数据库有不同的字段类型和数据约束

请牢记:不同的数据库可处理的数据字段的类型是不同的。Django的ORM努力去适配兼容这些不同的数据类型,但是其所能做的,也只有这么多。

比如:有些人在本地使用SQLite数据库,在线上生产环境用PostgreSQL数据库。他们认为Django ORM可以让他们不用考虑不同数据库的特性差异,最终他们都会陷入麻烦:因为SQLite是动态的弱类型,而不是PostgreSQL的强类型。

当然,Django ORM可以帮助你的代码以强类型的方式操作SQLite,但是表单和数据验证的错误在开发阶段不会被捕捉到,直到代码上线才会被发现。比如你在本地可以毫无障碍的存储长字符串,因为SQLite3不在乎这个,但是在生产环境里,你的PostgreSQL或mysql会报出约束错误,这些错误你在本地测试环境中不会发现,你将很难重现这些问题,直到你建立一致的本地测试环境为止。

大多数问题都不会被发现,直到项目跑在一个强类型的数据库上(比如PostgreSQL或MySQL),当这些类型的bug发生时,你应该结束自责,努力在本地开发环境中搭建正确的数据库。


提示:Django+PostgreSQL组合

据我们所知,大多数Django开发者在所有的环境优先使用PostgreSQL,这些环境包括开发环境、演示环境、QA环境、生产环境。

根据你的操作系统,可以使用以下操作

你也许得花些功夫才能让PostgreSQL本地运行在某些操作系统上,但是你会发现花这些功夫是值得的。


2.1.3 固定数据(Fixtures)不是魔法解决方案

你也许想知道为什么不采用固定数据来使本地数据库和生产数据库的区别透明化。

对,固定数据在提供简单硬代码测试数据集方面是非常优秀的。有时你需要在开发中用假的测试数据填充你的数据库,特别是在早期项目的演示阶段

固定数据不是一个在数据库之间移植大量数据集的可信工具,它是一个具体数据库不明确的方式,它们根本就不应该那么用。不要错以为固定可以用来做在生产数据库和其他数据库之间移植数据的基础数据工具(dumpdata/loaddta)

2.2 使用Pip和Virtualenv

如果你目前还没用这它们,我们强烈建议你熟悉这两个工具。对于Django项目来说,它们是事实上的标准配置,大多数使用Django的公司都依赖于者两个工具

Pip是一个从Python包目录(Pypi)及其镜像获取python包的工具.它用来管理和安装Python包,它和easy_install很像,不过有更多特性,关键的一个特性是支持Virtualenv。

Virturlenv是一个可以用来创建相互独立的Python环境的工具,这些独立的环境可以有不同的包依赖体系。当你同时开发多个项目且不同的项目依赖不同的包版本库时,你应该考虑使用Vitualenv。

举个例子:假设你开发两个项目,其中一个依赖Django1.7,一个依赖Django1.8.

  • 如果没有使用Vituraenv(或者其他管理包依赖的替代工具),你将不得不在每次切换项目时重装Django。
  • 如果你觉得这繁琐无用,请注意:大多数实际Django生成项目至少需要依赖12个以上的包。

Pip已经包含在Python3.4以及更新版本,深度阅读以及安装指令可以在以下页面找到:


提示:virtualenvwrapper

我们为Mac OS X和Linux系统用户高度推荐virtualenvwrapper,为Windows系统用户推荐virtualenvwrapper-win,这些项目都是由Doug Hellman 发起。

就个人意见,我们一般认为不带virtualenvwrapper使用virtualenv真是一种痛苦,因为当你每次想激活一个virtualenv环境的时候,你将不得不输入以下这个长命令?

Example 2.1

$ source  ̃/.virtualenvs/twoscoops/bin/activate

使用virtualenvwrapper,你只需要输入:

Example 2.2

$ workon twoscoops

Virtualenvwrapper是一个pip和vituralenv的流行搭配工具,它使我们的输入更简单,但它不是绝对必须的。


图2.1:Pip、virtualenv和virtualenvwraper之间关系以雪糕的形式的说明图---图找原版看吧。

2.3 通过Pip安装Django及其他依赖

Django官方文档描述了几种安装Django的方式。我们推荐的方法是通过pip和必需清单文件的方法。

概要描述一下工作过程:一个必需清单文件就像一个Python包的清单,包含了你想要装的所有Python包,它包含每个包的名字和版本,你可以使用pip从这个清单文件安装所需包到你的virturlenv环境。

这个清单文件设置安装的内容我们将在第五章的配置与所需清单文件中谈及。


提示:配置PYTHONPATH

如果你对命令行以及环境变量的知识掌握比较牢靠的话,你可以设置你的virtualenv环境的PYTHONPATH变量以便django-admin.py可以正常启动站点及执行其他任务。

你也可以通过pip的最新版本设置你的PYTHONPATH变量包含当前目录。在项目的根目录运行“pip install -e .”命令是把当前目录作为适时编辑的包的一个技巧。

如果你不知道如果设置或者你觉得上面内容有点复杂,别担心,坚持使用manage.py就可以了。

推荐阅读:


上一篇:SVM 支持向量机
下一篇:如何统计应用中各个包下有多少个方法数

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款