django开发环境搭建(参考流程)
分类: LINUX
原文地址:django开发环境搭建(参考流程) 作者:bailiangcn
对于一个初学者,在实际的开发环境中,应该采用什么的样的工具来开发django呢?
我想环境至少应该具备的特性有:
- 多版本python环境的支持
- 版本控制
- 自动测试框架
- 数据库支持迁移
- 部署的自动化
参考文档
virtualenv介绍
South文档
- Fabric文档
本文试图针对以上问题,总结一个django开发的“标准的工作流程”。
前期准备
python软件已经安装
本文以 ubuntu 12.04 64位 作为环境举例
一、Python虚拟环境的搭建
使用工具virtualenv搭建Python虚拟环境,主要希望解决几个问题:
隔离项目之间的第三方包依赖,如A项目依赖django1.2.5,B项目依赖django1.3。
为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。
操作步骤
假设需要建立一个名称为 ELC 虚拟环境
1. 安装 virtualenvwrapper (virtualenv的命令包装) ,会自动安装 virtualenv $ sudo pip install virtualenvwrapper 2. 修改 ~/.bashrc ,把以下内容加入.bashrc 的尾部 export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/directory-you-do-development-in
source /usr/local/bin/virtualenvwrapper.sh 然后执行命令让virtualenvwrapper命令生效 $ source .bashrc 3. 建立 ELC 环境 $ mkvirtualenv ELC 4. 检查 env 的环境
- 提示符变为 (ELC)[bl@bl-family:~]$
- which python 输出为
/home/bl/.virtualenvs/ELC/bin/python
二、安装django
假设准备安装最新的django版本。
操作步骤
1. 保证提示符是 (ELC)的情况下,也就是在 ELC虚拟状态下 pip install django
如果出现 Cannot fetch index base URL https://pypi.python.org/simple/ 错误 参考这里解决
2. 验证安装情况 (ELC)$ which django-admin.py 返回结果 /home/bl/.virtualenvs/ELC/bin/django-admin.py
三、建立初始的django项目
假设准备建立一个名称为 ELcloud 的django项目。
操作步骤
1. 保证提示符是 (ELC)的情况下,也就是env状态下 (ELC)$ django-admin.py startproject ELcloud
现在在家目录下 ELcloud 的目录结构是:
/home/bl/ELcloud
|---
|---manage.py
|---ELcloud
| |---urls.py
| |---__init__.py
| |---wsgi.py
| |---settings.py
四、使用git和坚果云进行版本控制
我平常喜欢使用国内的坚果云作为代码的托管服务器,所以下面介绍如何使用坚果云配合git来进行管理代码,当然使用github也可以。
操作步骤
1. 初始化本地 git 库 (ELC)$ cd ~/ELcloud
(ELC)$ git init 2. 因为settings.py配置文件会有敏感信息,提交一个初始化的settings_default.py,建立 .gitignore 文件忽略实际使用的 settings.py (ELC)$ cp ~/ELcloud/ELcloud/settings.py ~/ELcloud/ELcloud/settings_default.py
(ELC)$ echo -ne '*.pyc\nsettings.py\n*.json' > .gitignore 现在 .gitignore 文件的内容变成
*.pyc python的中间文件
settings.py 项目的配置文件
*.json django生成的中间文件 3. 进行首次的本地提交 (ELC)$ git add .
(ELC)$ git commit -a -m "项目建立,初次提交" 4.从本地向坚果云推送 $ git clone --bare ~/ELcloud ~/Nutstore/git/ELcloud.git
五、通过South对django数据库进行维护
django的syncdb命令在数据库表首次建立时能够根据model建立相应的表,但是一旦数据库中有同名的表,则syncdb命令不会更新数据库。虽然不能说django这样设计不好,但确实挺麻烦。
South解决了这个问题,能够检测对models的更改并同步到数据库。
操作步骤
1. 安装south (ELC)$ pip install south 2. 在 django 的 settings.py 的 INSTALLED_APPS 段中增加 'south',
现在 ~/ELC/ELcloud/ELcloud/settings.py 的 INSTALLED_APPS
段内容是(django 1.5.1): INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'south',
) 3. 根据自身的环境设置 settings.py 的数据库部分,比如我使用 postgrepsql ,
需要先安装 psycopyg2 接口 (ELC)$ sudo apt-get build-dep psycopg2
(ELC)$ pip install psycopg2 然后手工建立一个elist的数据库,修改settings.py的 DATABASES 部分,去掉注释后是: DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'elist',
'USER': 'databaseuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
} 4. 执行django的syncdb命令,在建立实际django应用前让South建立必须的数据表。 (ELC)$ python manage.py syncdb 会提示建立django应用中的用户名、电子邮件和密码 5. 建立 pip 安装的软件环境的快照,用于版本库管理 (ELC)$ pip freeze > requirements.txt 查看 requirements.txt 的内容 Django==1.5.1
South==0.7.6
argparse==1.2.1
psycopg2==2.5
wsgiref==0.1.2 如果需要安装,使用命令:
(ELC)$ pip install -r requirements.txt 6. 把 requirements.txt 加入版本控制,再次提交 (ELC)$ cd ~/ELcloud
(ELC)$ git add requirements.txt
(ELC)$ git commit -a -m "south安装完毕,初次提交" 7. 按照正常的方式建立一个 django 的应用app,比如一个叫做 elist 的应用 (ELC)$ python manage.py startapp elist 在 settings.py的INSTALLED_APP部分增加 elist,现在内容是: INSTALLED_APPS = (
'django.contrib.auth',
...
'south',
'elist',
) 在添加model前,需要告诉South准备迁移数据库 (ELC)$ python manage.py schemamigration elist --initial
(ELC)$ python manage.py migrate elist 这样south会建立一个合并文件,用于应用和恢复数据库操作,在修改django 的 model后,可以使用命令 (ELC)$ python manage.py schemamigration elist --auto
#检测对models的更改,但并不实际提交数据库 (ELC)$ python manage.py migrate elist #实际更改数据库
六、使用fabric进行自动部署
Fabric是一个Python库,可以通过SSH在多个host上批量执行任务。你可以编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量远程服务器上自动运行。这些功能非常适合应用的自动化部署,或者执行系统管理任务。
操作步骤
1. 安装fabric (ELC)$ pip install fabric 2. 在 ~/ELcloud 目录下,建立一个名称为 fabfile.py的文件,内容如下: #!/usr/bin/env python
# -*- coding: UTF-8 -*- from fabric.api import local def pd():
"""
准备部署
"""
local('python manage.py test elist')
local('git add -p && git commit') 使用方式是 $ fab pd ,能够自动测试django应用,更多 fabric的用法请参考fabric文档。
七、安装django-debug-toobal插件帮助开发调试
主站网址 django debug toolbar是一个django下的插件,能够在浏览器侧面显示一个面板,在实际开发中用来查看变量,分析性能等各方面都有不错的效果。
版本 0.9.4 显示的内容
- django版本
- cpu运行时间
- django的settings
- HTTP Headers
- Request Vars (view函数、Cookies Variables、Session Variables、Get Variables、Post Variables)
- SQL的实际语句及状态
- 模板及上下文参数
- Signals
- Logging
操作步骤
- 安装
(ELC)$ pip install django-debug-toolbar
- 配置 django的settings.py
- 中间件部分(尽量往后放)
MIDDLEWARE_CLASSES = (
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
# ...
)- 安装app,在INSTALLED_APPS部分增加一行:
INSTALLED_APPS = (
...
'debug_toolbar',
)- 在settings.py末尾增加一行:(参考这里)
INTERNAL_IPS = ('127.0.0.1',)
注意在使用中,插件需要渲染摸板才能看到,否则看不到效果。
附录
1.virtualenvwrapper常用命令
创建虚拟环境 mkvirtualenv [env]
列出当前环境安装的包 lssitepackages
返回系统环境 deactivate
切换环境 workon [env]
- 删除环境 rmvirtualenv [env]
2.django安装错误解决
如果在 pip install django过程中出现如下错误信息:
Downloading/unpacking django
Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement django
No distributions at all found for django
首先使用命令 pip --version检查pip的版本,如果是 1.3.1,说明是 pip 1.3.1 与低版本的 OpenSSL 库不兼容造成的访问 https 错误,一种解决办法是:
$ workon ELC
(ELC)$ easy_install pip==1.2.1
3.django 端口占用的问题
如果在 python manager runserver过程中出现如下错误信息:
Error: That port is already in use.
解决办法是:
$ sudo fuser -k 8000/tcp
4.south的回退问题
有时候在south的使用过程中,希望回退到某个版本,可以使用下面的命令。
# 列出所有版本,前面带星号表示已经应用
$ python manage.py migrate --list # 会退到第13号版本
$ python manage.py migrate elist 0013
django开发环境搭建(参考流程)的更多相关文章
- nginx+uwsgi+django开发环境搭建
Nginx+uWSGI+Djangoi开发环境搭建 Django简介,环境搭建 uWSGI简介,安装与配置 Nginx安装与配置 Nginx+uWSGI+Django原理解析 1.django简介,环 ...
- Python+django开发环境搭建
Python目前主版本有2个,2.7+和3.4+ 新入手,决定还是从2.7开始 先从python官网https://www.python.org/下载python2.7.10,64位版本(这里注意,选 ...
- Django开发环境搭建
最近笔者使用了Django框架作为项目model层的数据对象处理. 关于Django的开发环境,需要安装以下内容: 1.安装python 2.安装VCForPython27.msi 3.安装pycha ...
- 01Go开发环境搭建(参考无闻大神)
一直安装下一步就可以了 GOPATH是工作目录 GOROOT是安装目录 如果有多个工作目录,就需要我们用分号进行分隔
- Django学习笔记 开发环境搭建
为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...
- Django之Django简介,开发环境搭建,项目应用创建
软件及Django框架简介 软件框架 一个软件框架是由其中各个软件模块组成的: 每一个模块都有特定的功能: 模块与模块之间通过相互配合来完成软件的开发. 软件框架是针对某一类软件设计问题而产生的. M ...
- cocos2d-x 3.11 游戏开发环境搭建流程
cocos2d-x 3.11.1 游戏开发环境搭建流程 1. 准备下面的软件 1) Windows7 64Bit+ VS2013 (VC++) 这个不用多说. 2) cocos2d-x-3.11.1. ...
- Ubuntu下Django初体验(一)——开发环境搭建
一.开发 环境搭建 1. linux下一般有自带的python,如果对版本不满意,可以再自行安装. 2. 安装ipython(推荐) sudo apt-get install ipython sudo ...
- 在 ubuntu18.04 中搭建 Django 开发环境
在Ubuntu 18.04 安装 python3.pip3.pycharm,搭建 Django 开发环境. 1.安装 python3 pip3 sudo apt-get install python3 ...
随机推荐
- EDM数据:如何选择邮件服务器平台
博主知道有不少的企业和个人都在寻找邮件服务器平台,下面博主从下面几个方面给大家介绍一下如何选择. 一.列表管理功能是否完善. 一般一个好的邮件服务器平台系统都有完善的列表管理功能.列表管理功能是指邮件 ...
- Vue知识整理12:事件绑定
采用v-on命令进行事件的绑定操作,通过单击按钮,实现按钮文字上数值的增加 带参数的事件过程 可以添加$event事件,实现事件信息的获取
- Visual Studio Code 断点调试Nodejs程序跳过node内部模块(internal modules)
Built-in core modules of Node.js can be referred to by the ‘magic name’ <node_internals> in a ...
- html script生成二维码
<div class="code" align="center"> <p >手机端扫描以下二维码直接观看(支持安卓Android/苹果i ...
- gts测试流程
测试目的: 用于检测你做的Android gms包是否满足兼容性要求,通俗点说,gms包,就是Google自己的apk,提供基础服务,例如YouTube.playstore等. 测试前提: 1.发货u ...
- 【HANA系列】SAP HANA SQL获取当前月的第一天
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取当前 ...
- 利用yum创建本地仓库与网络源
一.创建本地yum仓库 1.cd /etc/yum.repos.d/ 2.创建配置文件:[root@li yum.repos.d]# vim local.repo 3.写入配置信息并保存 [li]na ...
- EFI系统分区如何删除
U盘或者硬盘被做了系统安装盘. 结果在格式化都是失败,分区也不行. 有了新招 EFI分区是您的系统启动引导的分区,存放引导启动的文件的,因此它是一个操作系统独立的分区,实际上它是UEFI加载的固件和应 ...
- 【组策略】1.组策略介绍group policy
组策略介绍group policy 高效学习法,念念不忘,必有回响. 分享一个高效学习思维,潜意识思考.就是在您没有大量时间的情况下,学习十分钟. 然后离开去完成别的事情的时候,大脑潜意识中还会继续思 ...
- 20191106 Spring Boot官方文档学习(1-2)
学习内容相关信息 最新版本:2.2.0 CURRENT GA 官网地址 官方文档地址 单页版文档地址 代码生成网址 2.入门 Spring Boot的主要目标是: 为所有Spring开发提供更快且入门 ...