注册

如何以正确的方式开始Django(v1.7.6)项目

来源:http://quxl.snbway.net/

目录:
virtualenv
virtualenvwrapper
django-admin.py创建项目
增加requirements.txt
增加README.md
增加.gitignore文件
同步数据库

一、virtualenv

什么是virtualenv?
virtualenv用于在一台机器上创建多个独立的python运行环境,类似于一个个沙盒环境。
作用:在一个机器上创建出相互隔离,互不影响的Python环境。例如:A项目依赖django v1.4.9 而项目B依赖django v1.7.6 。这种情况下如果用同一个全局环境,项目切换将十分痛苦。而virtualenv就是来解决这个问题的。
安装virtualenv

sudo pip install virtualenv

创建虚拟环境

virtualenv env1 #创建一个名字为env1的 虚拟环境

启动续集环境

cd env1
source ./bin/activate
注意此时命令行会多一个(env1),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去

二、使用virtualenvwrapper管理虚拟环境

1.什么是virtualenvwrapper?
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
1) 将所有虚拟环境整合在一个目录下
2)管理(新增,删除,复制)虚拟环境
3)切换虚拟环境
4)…
2.安装virtualenvwrapper

sudo pip install virtualenvwrapper #安装virtualenvwrapper
mkdir $HOME/.virtualenvs
echo export WORKON_HOME=$HOME/.virtualenvs>>~/.bashrc
echo source /usr/local/bin/virtualenvwrapper.sh>>~/.bashrc
source ~/.bashrc

3.简单使用virtualenvwrapper
新建/激活/关闭/删除虚拟空间需要执行下面的命令:

mkvirtualenv quxl #创建quxl虚拟环境
workon quxl #切换到quxl虚拟环境
deactivate #从虚拟环境中退出
rmvirtualenv quxl #删除quxl虚拟环境

三、django-admin.py创建项目

1.创建新虚拟环境

quxl:~ quxl$ mkvirtualenv quxl #创建新虚拟环境quxl
New python executable in quxl/bin/python #可以看到 这里正在创建新python环境
Installing setuptools, pip...done. #正在安装 setuptools&pip
(quxl)quxl:~ quxl$ #已经进入虚拟环境啦

2.安装依赖库

pip install django==1.7.6 #安装当前最高版本1.7.6 (实际上1.8.1 已经出了,但尚未发布)
pip isntall MySql-python==1.2.5 #安装mysql驱动 如果用其他数据库,安装对应的驱动
pip install markdown #因为我是一直写RESTful APIs,就用这个库来写文档
pip install djangorestframework #RESTful APIs 的主角

四、为每个项目增加requirements文件

部署文件(requirements.txt)中储存的是该django项目的依赖库, 一般使用pip freeze –local生成. 本着”只安装需要的模块”的原则, 不同的设 置文件, 应当对应不同的requirements.txt文件. 就像分离式的settings文件一样, 我们使用分离式的requirements文件. 建立requirements目录:

requirements/
base.txt
local.txt
production.txt

在base.txt中, 储存的是所有开发环境中都会用到的依赖库, 例如:

Django==1.7.6
Markdown==2.6.1
MySQL-python==1.2.5
djangorestframework==3.1.0

在local.txt中, 储存的是本地开发时用到的依赖库:

# 导入base.txt中的依赖库
-r base.txt
coverage==3.7.1
django-debug-toolbar==1.2

当重新配置本地开发环境时, 可以使用以下代码安装依赖库:

pip install -r requirements/local.txt

五、为每个项目增加README.md

README.md文件是一个符合markdown语法的文本文件。为了来说明项目细节,可以介绍下项目背景以及一些注意的地方或者运行方式等等。总是为了方便人们理解项目的。最好为每个经手的项目增加该文件,方便自己或者后来维护者理解项目。相信我别人看到这个文件会感谢你的。

六、增加.gitignore文件,如果使用git作为版本代码仓库

.gitignore文件是git的忽略文件。在提交代码的时候该文件里标出的文件将不被提交。这里给出一份我自己的.gitinore文件清单:

.DS_Store
log/*.log
.project
.pydevproject
*.pyc
.gitignore
my_settings.py
*.pid
*.sock
*.ini

总有很多新手在提交代码的时候没有用git status 检查提交内容的习惯。最后导致自己的pyc文件和本地ini文件被提交到了服务器。这对整个团队来说是十分操蛋的。碰到这种事只能暗暗的说声,靠~所以这个文件无比保证每个开发者正确配置。

七、同步数据库

在django1.7之前,同步数据库的命令为 python manage.py syncdb 。但在数据库创建之后再对model增加字段,此时就十分蛋疼,syncdb 无法识别model的改动,那么就要求我们自己手工同步或者用工具同步。还好django1.7 是数据库同步更加强大了。主命令如下:

migrate: 用于执行迁移动作
makemigrations: 基于当前的model创建新的迁移策略文件
sqlmigrate: 显示迁移的SQL语句
值得注意的是, migration是基于App的, 因此, 我们可以针对某些app不启用migration功能
已邀请:

要回复问题请先登录注册