Django学习笔记

Django

软件框架

一个公司是由公司中的各部部门来组成的,每一个部门拥有特定的职能,部门与部门之间通过相互的配合来完成让公司运转起来。

一个软件框架是由其中各个软件模块组成的,每一个模块都有特定的功能,模块与模块之间通过相互的配合来完成软件的开发。

软件框架是针对某一类软件设计问题而产生的。

MVC框架

施乐公司 帕罗奥多研究中心 smalltalk语言 Java Web MVC

软件设计模式

MVC的产生理念: 分工。让专门的人去做专门的事。

MVC的核心思想: 解耦。

 

M Model,模型,和数据库进行交互。

V: View,视图,负责产生html页面。

C: Contrllor,控制器,接收请求,进行处理,与M和V进行交互,返回应答。

MVT

Django 劳伦斯出版集团 新闻内容网站。

快速开发DRY原则。Do not repate yourself.不要自己去重复一些工作。

 

M:Model,模型,和MVC中M功能相同,和数据库进行交互。

V:View,视图,和MVC中C的功能相同,接收请求,进行处理,与M和T进行交互,返回应答。

T: Template,模板,和MVC中V的功能相同,产生html页面。

虚拟环境

 

 

之前安装python包的命令: sudo pip install 包名

包的安装路径:/usr/local/lib/python2.7/dist-packages

安装同一个包的不同版本,后安装的包会把原来安装的包覆盖掉。这样,如同一台机器上两个项目依赖于相同包的不同版本,则会导致一些项目运行失败。

解决的方案就是:虚拟环境。

虚拟环境是真实python环境的复本。

安装虚拟环境的命令:

sudo pip install virtualenv #安装虚拟环境

sudo pip install virtualenvwrapper #安装虚拟环境扩展包

 

创建虚拟环境命令:【

mkvirtualenv 虚拟环境名

进入虚拟环境工作:

workon 虚拟环境名

查看机器上有多少个虚拟环境:

workon 空格 + 两个tab键

退出虚拟环境:

deactivate

删除虚拟环境:

rmvirtualenv 虚拟环境名

虚拟环境下安装包的命令:

pip install 包名

注意:不能使用sudo pip install 包名,这个命令会把包安装到真实的主机环境上而不是安装到虚拟环境中。

安装django环境:

pip install django==1.8.2

查看虚拟环境中安装了哪些python包:

pip list

pip freeze

项目创建

命令:django-admin startproject 项目名

注意:创建应用必须先进入虚拟环境。

项目目录如下:

 

__init__.py: 说明test1目录是一个可导入的python包。

settings.py: 项目配置文件。

urls.py: url地址和网页的对应关系。url配置

wsgi.py: 网站的部署。

manage.py: 管理django项目。

 

一个项目由很多个应用组成的,每一个应用完成一个特定的功能。

DRY

创建应用的命令如下:

python manage.py startapp 应用名

注意:创建应用时需要先进入项目目录。

应用目录如下:

 

__init__.py: 说明所在的目录是一个python包。

models.py: 写和数据库相关的内容。

views.py: 写接收请求,进行处理,与M和T进行交互,返回应答的内容。

tests.py: 写项目测试代码。

admin.py: 跟后台管理页面项目。

建立应用和项目之间的联系,需要对应用进行注册。

修改settings.py中的INSTALLED_APPS配置项。

 

 

运行开发服务器命令:

python manage.py runserver

ORM

 

django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。

设计类:模型类。

ORM另外一个作用:根据设计的类生成数据库中的表。

模型类

模型类设计

在应用models.py中设计模型类。

必须继承与models.Model类。

1) 设计BookInfo类。

2) 设计HeroInfo类。

Models.ForeignKey可以建立两个模型类之间一对多的关系,django在生成表的时候,就会在多的表中创建一列作为外键,建立两个表之间一对多的关系。

模型类生成表

1) 生成迁移文件

命令:python manage.py makemigrations

 

迁移文件是根据模型类生成的。

2) 执行迁移生成表

命令:python mange.py migrate

安装sqliteman查看sqlite数据库: sudo apt-get install sqliteman

根据迁移文件生成表。

生成表名的默认格式:

应用名_模型类名小写

通过模型类操作数据表

进入项目shell的命令:

python manage.py shell

以下为在相互shell终端中演示的例子:

首先导入模型类:

from booktest.models import BookInfo,HeroInfo

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.hgender = False

h.hcomment = ‘降龙十八掌’

b2 = BookInfo.objects.get(id=2)

h.hbook = b2  #给关系属性赋值,英雄对象所属的图书对象

h.save()

6)查询图书表里面的所有内容。

BookInfo.objects.all()

HeroInfo.objects.all()

关系操作

1)查询出id为2的图书中所有英雄人物的信息。

b = BookInfo.objects.get(id=2)

b.heroinfo_set.all() #查询出b图书中所有英雄人物的信息

后台管理

1) 本地化

语言时区的本地化。

修改settings.py文件。

2) 创建管理员

命令:python manage.py createsuperuser

3) 注册模型类

在应用下的admin.py中注册模型类。

告诉djang框架根据注册的模型类来生成对应表管理页面。

b = BookInfo()

str(b) __str__

4) 自定义管理页面

自定义模型管理类。模型管理类就是告诉django在生成的管理页面上显示哪些内容。

视图

Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求的,视图函数处理之后,要给浏览器返回页面内容。

视图函数的使用

1)定义视图函数

视图函数定义在views.py中。

例:

def index(request):

#进行处理。。。

return HttpResponse('hello python')

视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象,hello python就是返回给浏览器显示的内容。

2)进行url配置

 

url配置的目的是让建立url和视图函数的对应关系url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数。

url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作。

配置url时,有两种语法格式:

a) url(正则表达式,视图函数名)

b) url(正则表达式,include(应用中的urls文件))

工作中在配置url时,首先在项目的urls.py文件中添加配置项时,并不写具体的url和视图函数之间的对应关系,而是包含具体应用的urls.py文件,在应用的urls.py文件中写url和视图函数的对应关系。

url匹配的过程

1)直接在项目的urls.py文件中写url和视图函数的对应关系。

 

当用户输入如http://127.0.0.1:8000/indexurl地址时,首先会去除域名部分,这里就是http://127.0.0.1:8000,剩下为/index,然后在去除前面的/,剩下index,拿index和项目的urls.py中的每一个配置项进行匹配,最终匹配成功执行视图函数index,index视图函数返回hello python内容给浏览器显示。

2)在项目的urls.py文件中包含具体应用的urls.py文件,应用的urls.py文件中写url和视图函数的对应关系。

 

当用户输入如http://127.0.0.1:8000/aindex时,去除域名和最前面的/,剩下aindex,拿aindex字符串到项目的urls文件中进行匹配,配置成功之后,去除匹配的a字符,那剩下的index字符串继续到项目的urls文件中进行正则匹配,匹配成功之后执行视图函数index,index视图函数返回内容hello python给浏览器来显示。

模板

模板文件的使用

1) 创建模板文件夹

2) 配置模板目录

3) 使用模板文件

a) 加载模板文件

去模板目录下面获取html文件的内容,得到一个模板对象。

b) 定义模板上下文

向模板文件传递数据。

c) 模板渲染

得到一个标准的html内容。

给模板文件传递数据

模板变量使用:{{模板变量名}}

模板代码段:{%代码段%}

for循环:

{% for i in list %}

{% empty %}

{% endfor %}

模板标签

案例完成

编码之前的准备工作:

1) 设计出访问页面的url和对应的视图函数的名字,确定视图函数的功能。

2) 设计模板文件的名字。

以下为案例中的简单设计过程:

1)完成图书信息的展示:

a) 设计url,通过浏览器访问 http://127.0.0.1:8000/index/ 时显示图书信息页面

b) 设计url对应的视图函数index。

查询出所有图书的信息,将这些信息传递给模板文件。

c) 编写模板文件index.html。

遍历显示出每一本图书的信息。

2) 完成点击某本图书时,显示出图书里所有英雄信息的页面。

a) 设计url,通过访问http://127.0.0.1:8000/数字/时显示对应的英雄信息页面。

这里数字指点击的图书的id。

b)设计对应的视图函数detail。

接收图书的id,根据id查询出相应的图书信息,然后查询出图书中的所有英雄信息。

c) 编写模板文件detail.html。

你可能感兴趣的:(个人笔记)