一:Django 简介

Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西。为了达到这个目标,Django 提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。Django的理念是DRY(Don't Repeat Yourself)来鼓励快速开发!

让我们一览 Django 全貌

urls.py

网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。

views.py

处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。

models.py

与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。

forms.py

表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。

templates 文件夹

views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。

admin.py

后台,可以用很少量的代码就拥有一个强大的后台。

settings.py

Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。

二:Django 环境搭建

1. 版本选择

Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3.

Django 1.6.x 支持 Python 2.6.X, 2.7.X, 3.2.X 和 3.3.X

Django 1.7.x 支持 Python 2.7, 3.2, 3.3, 和 3.4 (注意:Python 2.6 不支持了)

Django 1.8.x 支持 Python 2.7, 3.2, 3.3, 3.4 和 3.5.  (长期支持版本 LTS)

Django 1.9.x 支持 Python 2.7, 3.4 和 3.5. 不支持 3.3 了

Django 1.10.x 支持 Python 2.7, 3.4 和 3.5. 

Django 1.11.x 下一个长期支持版本,将于2017年4月发布

使用最新版本的问题就是,可能要用到的一些第三方插件没有及时更新,无法正常使用这些三方包。

如果是学习,可以选择目前的 Django 1.8.x 来进行,遇到问题也容易找到答案。

当然如果需要新版本的功能也可以使用新版本,毕竟 Django 1.9 以后admin界面还是更漂亮些

 

2. 安装 Django

注意:以下方法中任何一种方法安装都可,不用每个都试一次。

另外 建议自行安装 bpython,这样在用起来会爽很多。进入终端的时候输入 bpython 可以有提示。当然也可以选择用 ipython

 

2.1. 用 pip 来安装

2.1.1 需要先安装pip

(1). ubuntu: 

sudo apt-get install python-pip

(2). Fedora:

yum install python-pip

(3). Linux, Mac OSX, Windows 下都可用 get-pip.py 来安装 pip:https://pip.pypa.io/en/latest/installing.html 

或者直接下载:get-pip.py 然后运行在终端运行 python get-pip.py 就可以安装 pip。

Note: 也可以下载 pip 源码包,运行 python setup.py install 进行安装

2.1.2 利用 pip 安装 Django

sudo) pip install Django
或者 (sudo) pip install Django==1.8.16 或者 pip install Django==1.10.3

如果想升级 pip 可以用:

(sudo) pip install --upgrade pip

2.2. 下载源码安装

https://www.djangoproject.com/download/

如果是源码包, 比如 django-1.8.16.tar.gz

2.2.1 Linux 或 Mac 下

tar -xvf django-1.8.16.tar.gz
cd django-1.8.16
(sudo) python setup.py install

2.2.2 Windows 下

直接用解压软件解压,然后到命令行(XP/Win7点击开始,在下面的那个输入框中输入 cmd, Win8在开始那里点右键,选择命令行)

比如在 D:\django-1.8.16\  这个文件夹下

cd D:
cd django-1.8.16
python setup.py install

什么?提示 ‘python’不是内部或外部命令,也不是可运行的程序或批处理文件。

那说明你的 Python 没有安装好,或者路径没有配置正确。

 

2.3. Linux用自带源进行安装(不推荐)

2.3.1  ubuntu 下安装 Django

sudo apt-get install python-django -y

2.3.2  Fedora 下安装用 yum

yum install python-django

注意:自带源安装的 Django 一般版本比较旧,而用 pip 可以安装最新的版本。

3. 检查是否安装成功

终端上输入 python ,点击 Enter,进行 python 环境

>>> import django
>>> django.VERSION
(1, 8, 16, 'final', 0)
>>> 
>>> django.get_version()
'1.8.16'

如果运行后看到版本号,就证明安装成功了,有问题请评论!

4. 搭建多个互不干扰的开发环境(可选)

我们有的时候会发现,一个电脑上有多个项目,一个依赖 Django 1.8,另一个比较旧的项目又要用 Django 1.5,这时候怎么办呢?

我们需要一个依赖包管理的工具来处理不同的环境。

如果不想搭建这个环境,只想用某一个版本的 Django 也可以,但是推荐学习此内容!

4.1 环境搭建

开发会用 virtualenv 来管理多个开发环境,virtualenvwrapper 使得virtualenv变得更好用

# 安装:
(sudo) pip install virtualenv virtualenvwrapper

Linux/Mac OSX 下:

修改~/.bash_profile或其它环境变量相关文件(如 .bashrc 或用 ZSH 之后的 .zshrc),添加以下语句

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

修改后使之立即生效(也可以重启终端使之生效):

source ~/.bash_profile

 

Windows 下:

pip install virtualenvwrapper-win

 

 

4.2 使用方法:

mkvirtualenv zqxt:创建运行环境zqxt

workon zqxt: 工作在 zqxt 环境 或 从其它环境切换到 zqxt 环境

deactivate: 退出终端环境

 

其它的:

rmvirtualenv ENV:删除运行环境ENV

mkproject mic:创建mic项目和运行环境mic

mktmpenv:创建临时运行环境

lsvirtualenv: 列出可用的运行环境

lssitepackages: 列出当前环境安装了的包

创建的环境是独立的,互不干扰,无需sudo权限即可使用 pip 来进行包的管理。

 

三:Django 基本命令

打开 Linux 或 MacOS 的 Terminal (终端)直接在 终端中输入这些命令(不是 python 的 shell中)

如果是 windows 用 cmd(开始 搜索 cmd 或者 快捷键 win + R,输入 cmd) 直接在 cmd 上操作。

1. 新建一个 django project

django-admin.py startproject project-name

一个 project 为一个项目,project-name 项目名称,改成你自己的,要符合Python 的变量命名规则(以下划线或字母开头)

2. 新建 app

python manage.py startapp app-name
或 django-admin.py startapp app-name

一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。

3. 同步数据库

python manage.py syncdb

注意:Django 1.7.1及以上的版本需要用以下命令
python manage.py makemigrations
python manage.py migrate

这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。

备注:对已有的 models 进行修改,Django 1.7之前的版本的Django都是无法自动更改表结构的,不过有第三方工具 south

4. 使用开发服务器

开发服务器,即开发时使用,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用来测试,不要用在生产环境。

python manage.py runserver

# 当提示端口被占用的时候,可以用其它端口:
python manage.py runserver 8001
python manage.py runserver 9999
(当然也可以kill掉占用端口的进程)

# 监听所有可用 ip (电脑可能有一个或多个内网ip,一个或多个外网ip,即有多个ip地址)
python manage.py runserver 0.0.0.0:8000
# 如果是外网或者局域网电脑上可以用其它电脑查看开发服务器
# 访问对应的 ip加端口,比如 http://172.16.20.2:8000

5. 清空数据库

python manage.py flush

此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。

6. 创建超级管理员

python manage.py createsuperuser

# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填

# 修改 用户密码可以用:
python manage.py changepassword username

7. 导出数据 导入数据

python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json

8. Django 项目环境终端

python manage.py shell

如果你安装了 bpython 或 ipython 会自动用它们的界面,推荐安装 bpython。

这个命令和 直接运行 python 或 bpython 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据,还有一些小测试非常方便。

9. 数据库命令行

python manage.py dbshell

Django 会自动进入在settings.py中设置的数据库,如果是 MySQL 或 postgreSQL,会要求输入数据库用户密码。

在这个终端可以执行数据库的SQL语句。如果您对SQL比较熟悉,可能喜欢这种方式。

10. 更多命令

终端上输入 python manage.py 可以看到详细的列表,在忘记子名称的时候特别有用。