对于一个初学者,在实际的开发环境中,应该采用什么的样的工具来开发django呢?

我想环境至少应该具备的特性有:

多版本python环境的支持

版本控制

自动测试框架

数据库支持迁移

部署的自动化

参考文档

本文试图针对以上问题,总结一个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

python上传数据到坚果云_django开发环境搭建(参考流程)相关推荐

  1. 树莓派上传数据到onenet云平台

    背景:通过树莓派上传数据到onenet云平台 操作:看代码 # -*- coding:utf-8 -*- # File: cputemp.py #向平台已经创建的数据流发送数据点 import url ...

  2. 【开源】ESP32怎样连接NEO6M模块接收GPS数据并显示在oled小屏幕上并可上传数据至Onenet云平台

    esp32连接neo6m在oled上显示定位数据 第一部分 ESP32怎样连接NEO6M模块接收GPS数据并显示在oled小屏幕上并可上传数据至Onenet云平台 一.软件部分 安装Arduino 我 ...

  3. 蓝鲸智云统一开发环境搭建指南

    腾讯官方的<蓝鲸智云统一开发环境搭建指南> 蓝鲸应用统一开发环境指南 一:背景 蓝鲸应用开发需要依赖django,celery,mysql-client等第三方库,而像celery又依赖其 ...

  4. RS485设备通过DTU上传数据到阿里云物联网平台

    在开始之前,首先需要搞明白以下几个概念,RS485, Modbus协议和DTU. RS485,基础概念自行度娘,这里如果简单理解的话就是一种串行通信标准.非硬件工程师其实记住RS485有4条线,A,B ...

  5. vscode如何运行python新手教程_从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)...

    VScode不愧是用户数量上升最快的编辑器,界面华丽(当然,需要配合各种主题插件),十分容易上手且功能强大.之前用它写C++体验十分nice,现在需要学习tensorflow,而工欲善其事必先利其器, ...

  6. 掌控板上传数据到阿里云平台

    前言 掌控板数据上云本来是一个很容易的事情,但在参考了多个博客之后,仍然无法上传成功,诡异的是MQTT一直无法连接,开始的时候我以为是我自己的WiFi的问题,后来切换了多个热点,最后来到学校用宿舍的W ...

  7. 传感器上传数据到阿里云Iot,然后从阿里云Iot传输数据到我的服务器和数据库

    整个系统架构如下: MQTT 和RocketMQ的区别: 1.传感器采用GPRS传输数据,采用微消息队列MQTT,微消息队列 MQTT 主要承担移动端连接接入.连接管理.数据转发等工作,相当于一个无限 ...

  8. 阿里云javaweb开发环境搭建(一)(jdk+Tomcat)

    因项目需要,新买了阿里云,准备把之前开发的项目打包部署在阿里云上. 我的阿里云镜像用的是Centos7,先是要搭建javaweb开发环境,这里把踩过的坑写一下,直接上干货: 一.使用工具 Xshell ...

  9. 智能家居开源平台——智汀家庭云(开发环境搭建)

    此文档描述如何搭建智汀家庭云开发环境,下载,编译与运行.如果你只是想体验智汀家庭云的功能,可以先阅读 使用 Docker 运行智汀家庭云. 环境准备 ·go 版本为 1.15.0 或以上 ·确保能生成 ...

最新文章

  1. Java为什么不提供运算符重载?
  2. angular模块库开发实例
  3. DCMTK:简单存储服务类用户
  4. 学习环境配置:Manjaro、MSYS2以及常见软件
  5. VSCode+BeetleX.VueHost开发Vue应用
  6. cs硕士妹子找工作经历【阿里人搜等互联网】
  7. 只使用Feign不引入Eureka
  8. java.io.serializable_java.io.NotSerializableException即使我实现“Serializable”
  9. seaborn_Seaborn Kdeplot –综合指南
  10. jqueryEasyui常用代码
  11. ActiveX控件属性
  12. oracle12c ora01017,ORACLE 12C 之 ORA-01017
  13. 闪存类型测试软件,一芯U盘闪存测试工具(DieSorting)
  14. EXCEL:如何设置某一列不能修改
  15. selenium测试框架快速搭建(ui自动化测试)
  16. 通过rgb值判断颜色深浅
  17. python处理skl参数、ubuntu下翻译选中文字
  18. 小鸟云服务器linux版本的登陆
  19. 32位计算机多少位寻址,32位的cpu的寻址能力到底是多少?
  20. Funcode-Q版泡泡堂

热门文章

  1. 优惠活动模块设计方案整理
  2. 【PCB设计】作为PCB工程师你绝对不能忽略这一点
  3. 王亟亟的Python学习之路(四)-循环,条件,Range,list和tuple
  4. 【ReLU】Rectified Linear Units, 线性修正单元激活函数
  5. js 正则表达式奇偶字符串替换_JS利用正则配合replace替换指定字符
  6. word2007 每页页眉单独编辑
  7. 【微信小程序全栈开发课程】课程目录(mpvue+koa2+mysql)
  8. 最新英特尔CPU漏洞SWAPGS曝光,允许黑客访问内存敏感信息
  9. 大数据应用--实时路况数据
  10. 3.1-智力障碍儿童