三大主流框架之一 Django
1.Django框架简介与环境搭建
1.MVC框架简介
Django就是一个遵循MVC的框架。
M:Model,模型 和数据库进行交互
V: View,视图 产生 html 页面
C:Controller,控制器 接受请求,进行处理,与 M 和 V 进行交互,返回应答。
MVT
M:Model,模型,和 MVC 中 M 功能相同,和数据库进行交互。
V:View,视图 ,和 MVC 中 C 功能相同,接收请求,进行处理,与 M 和 T 进行交互,返回应答。
T:Templates,模板,和 MVC 中 V 功能相同,产生 html 页面。
2.Django简介
Django,是用python语言写的开源web开发框架,并遵循MVC设计。Django的主要目的是简便/快速的开发数据库驱动网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务与整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包,这使得Django具有很强的可扩展性。它还强调快速开发和DRY原则。
Django框架遵循MVC设计,并且有一个专有名词:MVT
3.虚拟环境的创建和使用
我们原先安装同一个包的不同版本,后安装的包会把原来安装的包覆盖掉 。这样,如同一台机器上两个项目依赖于相同包的不同版本,则会导致一些项目运行失败。
解决的方案就是:虚拟环境 。
虚拟环境是真实 python 环境的复制版本 。
- 安装虚拟环境的命令:
sudo pip install virtualenv # 安装虚拟环境
sudo pip install virtualenvwrapper # 安装虚拟环境扩展包
- 配置虚拟环境的命令:
sudo mkdir -p $WORKON_HOME # 创建目录用来存放虚拟环境
# 在 ~/.bashrc中添加行
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
# 运行
source ~/.bashrc
- 虚拟环境相关操作命令:
mkvirtualenv -p [/usr/bin/python3(python路径)] [虚拟环境名称] # 创建虚拟环境
rmvirtualenv [虚拟环境名称] # 删除虚拟环境
deactivate # 退出虚拟环境
workon # 进入虚拟环境 注意:按workon+两次Tab键会提示所有虚拟环境
接下来我们安装Django
- 安装Django环境:
pip install django==1.8.2
4.Django项目和应用创建
- 项目创建
django-admin startproject [项目名] # 项目创建命令
# 注意: 创建应用必须先进入虚拟环境
项目目录如下:
_init_.py:说明是一个python包
settings.py:项目的配置文件
urls.py:进行 url 路由的配置
wsgi.py:web 服务器和 Django 交互的入口
manage.py:项目的管理文件
应用创建
一个项目是由很多个应用组成的,每一个应用完成一个特定的功能。
创建应用的命令如下:
python manage.py startapp [应用名]
注意:创建应用时需要先进入项目目录。
应用目录如下:
_init_.py:说明目录是一个 python 模块
models.py:写和数据库项目的内容
views.py:接收请求,进行处理,与 M 和 T 进行交互,返回应答。定义处理函数,视图函数。
test.py:写测试代码的文件
admin.py:网站后台管理相关的文件
建立应用和项目之间的联系,需要对应用进行注册
修改 settings.py 中的 INSTALLED_APPS 配置项
运行开发 web 服务器命令:
python manage.py runserver
2.Django的基本使用
1.ORM简介
Django中内嵌了 ORM 框架,ORM 框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作
2.模型类设计和表生成
- 设计类:模型类(models.py)
ORM 另外一个作用:根据设计的类生成数据库中的表
定义模型类常用的Django内置方法:
模型类生成表
生成迁移文件
命令:python manage.py makemigrations
执行迁移生成表
命令:python manage.py migrate
3.通过模型类操作数据表
models.CharField(max_length=20) # 说明数据是字符串类型,设置最大长度为20
models.DateField() # 说明数据是日期类型
models.InterField() # 说明数据是整形
models.BooleanField() # 说明数据是布尔类型
modes.ForeignKey(父类) # 定义外键
如果出现报错环境变量 Variable Environment 错误,在views.py中添加代码,代码如下:
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")# project_name 项目名称
django.setup()
在settings.py中的 DATABASES 中配置数据库:
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': [数据库名],
'USER': [mysql用户名],
'PASSWORD': [mysql密码],
'HOST': [地址],
'PORT': [端口号]3306
}
在项目目录 _init_.py 下导入pymysql
import pymysql
pymysql.install_as_MySQLdb()
注意:在操作数据表前,数据库内一定已有对应的数据表。
4.视图的使用
在Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求。视图函数处理之后,要给浏览器返回页面内容
视图函数的使用
视图函数定义在 views.py 中。
例:
from django.shortcuts import render, redirect
from [项目名称].models import [数据库模型类]
def index(request):
# 进行处理
return redirect(视图)
视图函数必须有一个参数 request,进行处理之后,需要有返回值,redirect 重定向到其他网页
进行 url 配置
url 配置目的是让建立 url 和视图函数的对应关系 。url 配置项定义在 urlpatterns 的列表中,每一个配置项都调用 url 函数
url 函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作
配置 url 时,有两种语法格式:
url(正则表达式,视图函数名)
url(正则表达式,include(应用中的 urls 文件))
工作中在配置 url 时,首先在项目的 urls.py 文件中添加配置项时,并不写具体的 url 和视图函数之间的对应关系,而是包含具体应用的 urls.py 文件,在应用的 urls.py 文件中写 url 和视图函数的对应关系。
url 匹配的过程
在项目的 urls.py 文件中包含具体应用的 urls.py 文件,应用的 urls.py 文件中写 url 和视图函数的对应关系
5.模板的使用
创建模板文件夹 [templates] 创建在项目目录内 模板的 html 放在 templates 文件夹内
配置模板目录
项目目录下的 settings.py 下的 TEMPLATES 列表中的 DIRS 键的列表内配置模板路径
os.path.join(BASE_DIR, 'templates')
使用模板文件
加载模板文件
去模板目录下面获取 html 文件的内容,得到一个模板对象
定义模板上下文
向模板文件传递数据
模板渲染
得到一个标准的 html 内容
给模板文件传递数据
模板变量使用:{{ 模板变量名 }}
模板代码段:
{% 代码段 %}
for 循环:
{% for i in list %} {% endfor %}
6.静态文件
在网页使用 css 文件,js 文件和图片叫做静态文件
- 新建静态文件夹 static 将其放在项目目录中
- 配置静态文件所在的物理目录,在 settings.py 中的底部配置
# 设置访问静态文件对应的url地址
STATIC_URL = '/static/'
# 设置静态文件存放的物理目录
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]