Django学习资料:
官方网站
Github源码
1.11版英文文档
1.11版中文文档
Django Book 教程
Tange With Django 教程
(1)重量级框架:Django原生提供了众多的功能组件,让开发更简便快速。
提供项目工程管理的自动化脚本工具
数据库ORM支持(对象关系映射,英语:Object Relational Mapping)
模板
表单
Admin管理站点
文件管理
认证权限
session机制
缓存(redis)
(2)MVT模式
1)MVC: 核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。
M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。
V全拼为View,用于封装结果,生成页面展示的html内容。
C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。
M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。
为什么要搭建虚拟环境? 在开发过程中, 需要使用python的某些工具包/框架时,比如Django框架django的1.11.11版本,我们安装了该版本(sudo pip install django==1.11.11),但是存在一个问题,当我们使用这个命令,会将Django安装到/usr/local/lib/python2.7/dist-packages路径下,但是如果我们在同一个电脑开发不同的项目需要用到不同版本的Django,这时我们安装一个新版本会覆盖掉原来的版本,从而导致了其他项目不能用。
解决方案:
虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响.
注:所有的虚拟环境都位于/home/下的隐藏目录.virtualenvs下
(1)搭建虚拟环境
sudo pip install virtualenv
sudo pip install virtualenvwrapper
gedit ~/.bashrc
),并添加如下:export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
source ~/.bashrc
在python2中,创建虚拟环境
mkvirtualenv 虚拟环境名称
例 :mkvirtualenv py_django
在python3中,创建虚拟环境
mkvirtualenv -p python3 虚拟环境名称
例 :mkvirtualenv -p python3 py3_django
说明:
- 创建虚拟环境需要联网
- 创建成功后, 会自动工作在这个虚拟环境上
- 工作在虚拟环境上, 提示符最前面会出现 “虚拟环境名称”
(2)使用虚拟环境
workon
workon 虚拟环境名称
deactivate
rmvirtualenv 虚拟环境名称
(先退出再删除,不能删除正在使用的虚拟环境)(3)在虚拟环境中安装工具包
提示 :
- 文档
- 工具包安装的位置 :
python2版本下:~/.virtualenvs/py_flask/lib/python2.7/site-packages/
python3版本下:~/.virtualenvs/py3_flask/lib/python3.5/site-packages
(1)创建工程
1)进入虚拟环境,移动到项目保存位置
2)创建工程
- 创建工程命令: django-admin startproject 工程名称
- 工程目录说明:
- 运行开发服务器(仅在开发阶段使用)
python manage.py runserver ip:端口
或
#不写IP和端口,默认IP是127.0.0.1,默认端口为8000
python manage.py runserver
(2)创建子应用
- 创建子应用命令: python manage.py startapp 子应用名称
- 工程目录说明:
admin.py文件跟网站的后台管理站点配置相关。
apps.py文件用于配置当前子应用的相关信息。
migrations目录用于存放数据库迁移历史文件。
models.py文件用户保存数据库模型类。
tests.py文件用于开发测试用例,编写单元测试。
views.py文件用于编写Web应用视图。
- 在Pycharm打开工程注册安装子应用:django工程并不能立即直接使用该子应用,需要注册安装后才能使用。
在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用,将子应用的配置信息文件apps.py中的Config类添加到INSTALLED_APPS列表中。
例如,将刚创建的book、login、pay子应用添加到工程中,可在INSTALLED_APPS列表中添加’book.apps.BookConfig’。
- 设置Pycharm环境
Django进行数据库开发的提示 : MVT设计模式中的Model, 专门负责和数据库交互.对应(models.py)
由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程. 而是定义模型类, 通过模型类和对象完成数据库表的增删改查.
ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象.
(1)定义模型类:在models.py中定义模型类,继承自models.Model
from django.db import models
# Create your models here.
# 准备书籍列表信息的模型类
class BookInfo(models.Model):
# 创建字段,字段类型...
name = models.CharField(max_length=10)
# 准备人物列表信息的模型类
class PeopleInfo(models.Model):
name = models.CharField(max_length=10)
gender = models.BooleanField()
# 外键约束:人物属于哪本书
book = models.ForeignKey(BookInfo)
(2)模型迁移(建表)
生成迁移文件:根据模型类生成创建表的语句 python manage.py makemigrations
迁移前:
迁移后:
执行迁移:根据第一步生成的语句在数据库中创建表 python manage.py migrate
默认采用sqlite3数据库来存储数据
(3)数据库操作
(1)设置时区和语言(在setting文件)
# 语言
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans'
# 时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
(2)设置超级管理员登录和密码: python manage.py createsuperuser
(3)运行然后浏览器进入超级管理员界面: http://127.0.0.1:8000/admin
(4)登录进去后导入表:在子应用的admin文件
from django.contrib import admin
from book.models import BookInfo,peopleInfo
# Register your models here.
# admin.site.register(模型类)
admin.site.register(BookInfo)
admin.site.register(peopleInfo)
(1)定义视图(在应用的view.py文件)
from django.http import HttpResponse,HttpRequest