以正确的方式开始DJANGO(V1.7.6)项目

以正确的方式开始DJANGO(V1.7.6)项目

原文:http://quxl.snbway.net/started-in-the-right-way-django-v1-7-6-project/

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

目录:

  1. virtualenv
  2. virtualenvwrapper
  3. django-admin.py创建项目
  4. 增加requirements.txt
  5. 增加README.md
  6. 增加.gitignore文件
  7. 同步数据库

一、virtualenv

  1. 什么是virtualenv?
    virtualenv用于在一台机器上创建多个独立的python运行环境,类似于一个个沙盒环境。
    作用:在一个机器上创建出相互隔离,互不影响的Python环境。例如:A项目依赖django v1.4.9 而项目B依赖django v1.7.6 。这种情况下如果用同一个全局环境,项目切换将十分痛苦。而virtualenv就是来解决这个问题的。
  2. 安装virtualenv
    sudo pip install virtualenv
  3. 创建虚拟环境
  4. virtualenv env1  #创建一个名字为env1的 虚拟环境
  5. 启动续集环境
    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功能.

这些东西今天先点到为止,以后会有文章详细介绍每个点。

 

参考文章:

[1]:http://www.weiguda.com/blog/7/

[2]:http://www.nowamagic.net/academy/detail/1330231

[3]:http://my.oschina.net/songmingming/blog/225667

[4]:http://www.tuicool.com/articles/jAJjma

Comments are closed.