今天来讲讲如何以正确的方式开始Django(v1.7.6)项目 目录: - 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管理虚拟环境- 什么是virtualenvwrapper?
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做: 1) 将所有虚拟环境整合在一个目录下 2)管理(新增,删除,复制)虚拟环境 3)切换虚拟环境 4)… - 安装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
- 简单使用virtualenvwrapper
新建/激活/关闭/删除虚拟空间需要执行下面的命令: mkvirtualenv quxl #创建quxl虚拟环境
workon quxl #切换到quxl虚拟环境
deactivate #从虚拟环境中退出
rmvirtualenv quxl #删除quxl虚拟环境
三、django-admin.py创建项目- 创建新虚拟环境
quxl:~ quxl$ mkvirtualenv quxl #创建新虚拟环境quxl
New python executable in quxl/bin/python #可以看到 这里正在创建新python环境
Installing setuptools, pip...done. #正在安装 setuptools&pip
(quxl)quxl:~ quxl$ #已经进入虚拟环境啦 - 安装依赖库
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.mdREADME.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功能. 这些东西今天先点到为止,以后会有文章详细介绍每个点。 |