Django是一个高效的web开发框架,使用Django可以用最小的代价构建和维护高质量的web应用。通过减少重复的代码,让人能够专注于web应用上有趣的关键性的东西。
遵循了模型-视图-控制器(MVC)的设计模式。简单来说,MVC是一种软件开发的方法,它把定义和访问 数据的代码(模型 model)、控制请求逻辑的代码(控制器 controller)和用户接口(视图 view)分割开来。我们会在以后更加深入地讨论MVC。
这个方法最重要的优点在于它的各个部分都是 松耦合 (loosely coupled)的。这样用Django开发的Web程序中每个部分都有它自己单一的目的,并且可以单独地被修改而不会影响到其他部分。比方说,一个程序员可以在不影响底层实现的情况下修改URL;设计师可以不需要接触Python的代码就修改页面的HTML;数据库管理员在重命名数据表之后只需要修改一个地方就可以了,而不需要在一大堆文件中查找替换。
一. Django基本环境的搭建
因为笔者为自己定下的发展方向是运维开发,因此所有的开发工作都会是在linux平台上进行,后续的环境搭建也基本上都是在linux系统中,笔者使用的系统是RHEL7.2。通过pyenv来管理不同的虚拟环境,在不同的虚拟环境中可以使用不同的python版本,为后续的项目开发提供便利。
1. 安装pip
yum install python-pip
2. 安装pyenv
安装pyenv的过程比较长,请见上一篇python开发环境准备文章。
3. 使用pyenv创建一个虚拟环境,然后切换到虚拟环境
pyenv virtualenv 3.5.2 myproject
pyenv local myproject
4. 在虚拟环境中使用pip来安装django
(myproject) # pip install django
5. 查看django是否安装成功
# python -m django --version
可以看到下面的画面,说明django安装成功,这里安装的django版本是1.9.8,是最新版本。
二、Django的基本命令
首先我自己创建一个Django的目录myproject,然后在这里目录里存放我自己的Django工程
# mkdir myproject
1. 创建一个工程
# django-admin.py startproject project-name
# django-admin.py startproject mywebsite #我想创建一个自己的博客网站,项目叫mywebsite
2. 在工程里创建一个APP
# cd mywebsite #进入到mywebsite工程目录
# project manage.py startapp app-name #这是创建网站APP的默认命令
#相当于创建工程底下的子项目
# 网站的第一个版本,叫做myweb
# python manage.py startapp myweb
3. 同步数据库
# python manage.py makemigrations #同步数据库
# python manage.py migrate #创建数据库
# python manage.py flush #清空数据库,留下空表(使用时要注意)
# python manage.py dbshell #进入数据库命令行,如果是mysql或postresql会要用户名密码
我们刚开始创建网站,只需要先创建一个基础的数据库即可,其余的命令只需要记住就好。
$python manage.py migrate
4. 启动自己的网站,使用Django初始页面
# 命令说明
# python manage.py runserver #默认启动方式,监听在127.0.0.1:8000端口上
# python manage.py runserver ip:port #监听在其他IP上
# 执行命令
# python manage.py runserver 127.0.0.1:8000
然后打开浏览器,打开http://127.0.0.1:8000页面,如果看到下面的页面说明你的第一步已经成功了。
5. 更多命令
输入python manage.py 命令可以查看详细的命令列表,不记得相关命令时可以这样查询。
三、Django框架简单介绍
创建好了Django工程mywebsite和下属的子项目myweb后,工程的文件目录结构如下:
# tree mywebsite
mywebsite/
├── manage.py
└── mywebsite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
manag.py 文件是工程项目所有管理命令的入口,可以使用python manage.py查看所有的命令
mywebsite目录下是工程的所有文件
__init__.py 工程的初始化文件
settings.py Django的设置文件,如DEBBUG的开关,静态文件的位置等
urls.py 网址的入口,关联对应到views.py中的一个函数(或者generic类),访问一个网址就对应一个函数
wsgi.py 部署服务器时使用到的文件
子项目myweb的目录结构如下:
#tree myweb
myweb
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
admin.py 与后台登录有关的文件
apps.py myweb属性相关的文件
mirgrations 数据库目录
models.py 数据库操作相关的文件
tests.py 项目测试有关的文件
views.py 网址函数,和工程目录中的urls.py相对应
四 、启动Django默认界面
1. 将新定义的myweb添加到settings.py中的INSTALL_APPS中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myweb', #新加的内容
]
还要将需要监听的网卡外网地址加入到settings.py中的可信赖的地址列表ALLOWED_HOSTS 中(Django1.10新增内容):
ALLOWED_HOSTS = [
'192.168.1.246',
]
2. 在myweb里的views.py文件中定义视图函数(访问页面时的内容)
#vim myweb/views.py
#下面是添加到views.py文件里的内容
#coding:utf-8
from django.http import HttpResponse
def index(request):
return HttpResponse("欢迎光临小灰灰的第一个小站")
第一行声明utf-8编码,因为下面使用到了中文,不使用utf-8会报错。
第二行插入了一个HttpResponse类,这个类是用来向网页返回内容,把内容显示在网页上面
第三行定义了一个函数index(request),第一个参数是request,和网页发来的请求有关,request变量里包含了get或post的内容,用户的浏览器和系统等信息包含在里面。函数返回一个HttpResponse对象,这个对象将包含的值显示在往上面
3. 添加视图函数对应的网址,就在上面第三部分我们提到的urls.py文件里。
# vim mywebsite/urls.py
from django.conf.urls import url
from django.contrib import admin
from myweb import views as mywb_views #新添加的内容,从myweb项目里插入views模块
urlpatterns = [
url(r'^$',myweb_views.index), #网址对应到views模块里定义的index函数
url(r'^admin/', admin.site.urls),
]
内容修改后保存
4. 启动我们的第一个Django项目,因为是在虚拟机上操作的,所以需要监听在外部网卡IP上
# python manage.py runserver 0.0.0.0:8000
然后在其他机器上打开浏览器, 输入虚拟机的IP和端口http://192.168.1.246:8000 ,就可以看到如下的页面,说明我们的第一个web站点创建成功。
这一章节的知识点:
1. pip的国内源配置
2. 虚拟开发环境的配置
3. Django的基本命令,包括项目、APP的创建,数据的创建和更新。
django-admin.py startproject project-name
project manage.py startapp app-name
python manage.py makemigrations #同步数据库
python manage.py migrate #创建数据库
python manage.py flush #清空数据库,留下空表(使用时要注意)
python manage.py dbshell #进入数据库命令行,如果是mysql或postresql会要用户名密码
python manage.py runserver #默认启动方式,监听在127.0.0.1:8000端口上
python manage.py runserver ip:port #监听在其他IP上
4. Django项目的基本架构,views.py、setting.py、urls.py、admin.py这几个文件的含义和联系
views.py 定义url响应函数,与urls.py配合使用。
settings.py 定义一些基本的配置参数
urls.py 定义对应的url规则
admin.py 对应管理后台