MVC框架
M Model 模型,和数据库进行交互
V View视图,产生html页面
C Controller 控制器,接收请求,进行处理,与M和V进行交互,返回应答。
MVT django模块,遵循MVC的设计。
没有C ,是V视图接收处理
T 模板,产生html页面,交给V ,返回浏览器页面
M:Model,模型,和MVC中M功能相同,和数据库交互,返回应答
V:View 视图,和MVC中C功能相同,接收请求,进行处理,与M和T进行交互
T:和MVC中V功能相同,用于产生html页面
虚拟环境:
安装python包的命令:sudo pip3 install 包名
包的安装路径:/usr/local/lib/python3.5/dist-packages
安装同一个包的不同版本,后安装的包会把原来安装的包覆盖掉。这样,如同一台机器上两个项目依赖于相同包的不同版本,则会导致一些项目运行失败。
解决方案:虚拟环境
虚拟环境是真是python环境的复制版本。
在虚拟机环境中使用的python是复制的python 。 安装python包也是安装在复制的python中。
安装虚拟环境的命令:
1、sudo pip install virtualenv #安装虚拟环境
2、sudo pip installvirtualenvwrapper #安装虚拟环境扩展包
3、编辑家目录下面的.bashrc文件,添加下面两行:
export WORKON_HOME=$HOME/.virtualenvs # pwd路径
source /usr/local/bin/virtualenvwrapper.sh
4、使用 source .bashrc 使其生效一下。
创建虚拟环境:
mkvirtualenv 虚拟环境名
创建python3的虚拟环境:
mkvirtualenv -p python3 虚拟环境名 #创建一个python3的虚拟环境
进入虚拟环境工作:
workon 虚拟环境名
查看机器上有多少个虚拟环境:
workon 空格 +两个tab键
退出虚拟环境:
deactivate
rmvirtualenv 虚拟环境 删除虚拟环境
pip install django==1.8.2 #在虚拟环境中安装python安装包
pip list #查看虚拟环境里装的那些包
pip freeze #查看虚拟环境中安装的python的包,网站做好后,发布的时候使用
两者区别:
pip install python 包名
apt-get install 软件
项目创建
命令: django-admin startproject 项目名
注意:创建应用必须先进入虚拟环境。
tree 目录的结构
test1
__init__.py 说明test1是一个python包
settings.py 项目的配置文件
urls.py 进行url路由的配置
wsgi.py web服务器和我们的Django交互的入口
manage.py 项目的管理文件
一个项目是由很多应用组成,每一个应用完成一个特定的功能。
创建应用的命令如下:
python manage.py startapp 应用名
注意:创建应用时需要先进入项目目录
python manage.py startapp booktest 创建一个应用
__init__.py 说明目录是一个python模块
model.py: 写和数据库相关的内容
views.py: 接收请求,进行处理,与M和T进行交互,返回应答。定义处理函数,视图函数。
tests.py 写测试代码的文件。
admin.py 网站后台管理相关的文件
建立应用和项目之间的联系,需要对应用进行注册。
修改settings.py中的INSTALLED_APPS配置项,在后面写上应用的名字。
python manage.py runserver 启动开发的外部服务器 输入提示的地址,通过浏览器访问。
ORM框架
Object:对象-类
Relations:关系,关系数据库中的表
Mapping: 映射
模型类设计:
在应用models.py中设计模型类。
必须继承与models.Model类。
1、设计BookInfo类
2、设计HeroInfo类
Models.ForeignKey可以建立两个模型类之间一对多的关系。django在生成表的时候,就会在多的表中创建一列作为外键,建立两个表之间一对多的关系。
模型类生成表:
1、生成迁移文件
命令:python manage.py makemigrations 迁移文件是根据模型类生成的
2、执行迁移生成表
命令:python mange.py migrate
通过模型类操作数据表
进入项目shell的命令: python manage.py shell
首先导入模型类:
from booktest.models import BookInfo.Herolnfo
1、向booktest_bookinfo 表中插入一条数据。
b=BookInfo() #定义一个BookInfo类的对象
b.btitle='天龙八部' #定义b对象的属性并赋值
b.bpub_date=date(1990.10.11)
b.save() #才会将数据保存进数据库
2、查询出 booktest_bookinfo表中id为1的数据
b = BookInfo.objects.get(id=1)
3、在上一步的基础上改变b对应图书的出版日期。
b.bpub_date = date(1989.10.21)
b.save() #才会更新新表格中的数据
4、紧接上一步,删除b对应的图书的数据。
b.delete() #才会删除
5、向booktest_heroInfo表中插入一条数据
h = HeroInfo()
h.hname = '郭靖'
h.hcomment = '降龙十八掌'
b2 = BookInfo.objects.get(id=2)
h.hbook = b2 #给关系属性赋值,英雄对象所属的图书对象
h.save()
6、查询图书表里面的所有内容
BookInfo.objects.all()
HeroInfo.objects.all()
关系操作
通过BookInfo类型对象查询关系HeroInfo信息
一类 由一查多 -》 多类
BookInfo b.heroinfo_set.all() HeroInfo
由多查一 《-
h.hbook
1、查询出id为2的图书中所有英雄人物的信息。
b = BookInfo.objects.get(id=2)
b.heroinfo_set.all() #查询出b图书中所有英雄人物的信息
后台管理
1、本地化
语言和时区的本地化。
修改项目的配置文件 settings.py。
2、创建管理员
命令: python manage.py createsuperuser
启动服务器: python manage.py runserver
登录地址:127.0.0.1:8000/admin
3、注册模型类
在应用下的admin.py中注册模型类
告诉django框架根据注册的模型类来生成对应表管理页面
b = BookInfo()
Str(b)__str__
视图
1、定义视图函数
视图函数定义在views.py中
例:
def index(request):
#进行处理。。。
return HttpResponse('hello python')
视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象,hello python 就是返回给浏览器显示的内容。
2、进行url配置
urlpatterns=[
url('正则表达式',对应的动作)
]
模板
模板不仅仅是一个html文件
模板文件的使用
1.创建模板文件夹
2.配置模板目录
3.使用模板文件
a.加载模板文件
去模板目录下面获取html文件的内容,得到一个模板对象。
b.定义模板上下文
向模板文件传递数据
c.模板渲染
得到一个标准的html内容