Python_Django框架

软件框架

定义

Python_Django框架

Django简介

Django,发音为[`d???ɡ??],是用python语言写的开源web开发框架,并遵循MVC设计。

MVT

Django是遵循MVC的一个Web框架,但是他有自己的一个名字,叫做MVT

和原则。Do not repeat yourself。不要自己去重复一些工作

M:Model,模型,和数据库进行交互,与MVC中的M功能相同
V:View,视图,接收请求,进行处理,与M和T交互,返回应答,与MVC中的C功能相同
T:template,模板,产生html页面,和MVC终的V功能相同

MVT的各部分功能:

Python_Django框架
其中:
  • 说明其所在路径是一个python的包
  • settings.py是项目的配置文件,比如项目要使用哪个数据库,就在里面配置
  • urls.py url:在访问网站时,我们输入的网站就是一个url的地址。urls.py文件是进行url路由的配置(当我们输入一个地址后,他怎么给我们找到对应的处理函数是谁)
  • wsgi.py Django是遵循wsgi协议的框架,wsgi.py就是web服务器和django交互的一个入口
  • manage.py 是我们项目的管理文件,是一个可执行文件,通过该文件,我们可以管理整个项目

创建django应用

一个项目由很多个应用组成,每一个应用完成一个功能模块

创建应用的命令如下:python manage.py startapp 应用名

每创建一个应用,里面就会有如下文件:

Python_Django框架
运行项目

运行一个web项目,就需要一个web服务器,而django本身给我们提供了一个web服务器,使用python manage.py runsevser运行该服务器,然后即可根据提示用浏览器访问

ORM

O:object,对象
R:relations,关系
M:mapping,映射

ORM的作用:建立类和表的对应关系

ORM让我们能够通过对类和对象的操作实现对表的操作,就不需要再去写sql语句。这是元类的一种最经典的应用

在创建的项目文件夹下的models.py文件中,我们设计和表对应的类,这个类被称做模型类

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

模型(M)

模型类设计和表生成

模型类设计

在项目文件夹下的models.py文件中,比如我们定义一个图书类

模型类的字段属性和选项

模型类属性命名限制

  • 不能是python关键字
  • 不允许使用连续的下划线,不是由django的查询方式决定的
  • 定义属性时需要指定字段类型,通过字段类型的参数指定选择,语法如下: 属性名 = models.字段类型(选项)

字段类型

使用时需要引入django.db.models包

  • AutoField 自动增长的IntegerField,通常不用指定,不指定时django会自动创建属性名为id的自动增长属性,在迁移文件中可以查看到

  • BooleanField 布尔字段,值为True或False

  • NullBooleanField 支持Null,True,False三种值

  • CharField(max_length=最大长度) 字符串,参数max_length指定最大字符个数,必须指定,不然报错

  • TextField 大文本字段,一般超过4k个字

  • IntegerField 整数

  • DecimalField(max_digits=None, decimal_places=None) 十进制浮点数,第一个参数表示总位,第二个参数表示小数位数

  • FloatField 浮点数,参数同上。注意:float的精确度比decimal小

  • DateField([auto_now=False, auto_now_add=False]) 日期,有两个可选参数:

    • auto_now 表示每次保存对象时,自动设置该字段为当前时间,用于“最后一次修改”的时间戳,它总是使用当前日期,默认为false
    • auto_now_add 表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认false
    • 两个参数是相互排斥的,不能同时使用
  • TimeField 时间参数同DateField

  • DateTimeField 日期时间,参数同上

  • FileField 上传文件字段

  • ImageField 继承于FileField,对上传的内容进行校验,确保是有效的图片

选项

作为Field()中的参数

通过选项实现的字段的约束,选项如下:

  • default 默认值。设置默认值
  • primary_key 若为True,则该字段会成为模型的主键字段,默认值是false,一般作为AutoField的选项使用
  • unique 唯一性约束,如果为True,这个字段在表中必须有唯一值,默认值是False
  • db_index 若值为True,则在表中会为这个字段创建索引,默认值为False
  • db_column 字段的名称,如果未指定,则使用属性的名称
  • null 如果为True,表示允许为空,默认值是False
  • blank 如果为True,则该字段允许为空白,默认值是False

更多的可以见官方文档

对比:null是数据库的概念,blank是后台管理页面表单验证范畴的

注意:当修改模型类之后,如果添加的选项不影响表的结构,则不需要重新做迁移,eg:blank和default

模型类生成表

一、 生成迁移文件

迁移文件是根据模型类生成的,生成的迁移文件存放在migrations文件夹下

命令:python manage.py makemigrations

二、执行迁移生成表

命令:python manage.py migrate

根据迁移文件生成表

注意:django默认使用的数据库是sqlite3,在项目文件夹下,与项目同名的文件夹下的settings.py文件中DATABASES字段处可以看到

当文件迁移后,我们就可以在项目文件夹下看到一个名为db.sqlite3的文件,即我们的数据库文件,可以直接使用相应软件打开

通过模型类操作数据表

  • 使用python manage.py shell进入项目终端
  • from booktest.models import BookInfo (from 应用名.models import 自己定义的类的名字)
  • 创建类的对象:b = BookInfo()
  • 增加实例属性(注意:这个实例属性的名字必须和类属性的名字一样):b.btitle = “天龙八部”
  • from datetime import date
  • b.bpub_date = date(1990,1,1)
  • 然后就把这个实例属性里面保存的数据添加到数据库:b.save(),注意:这个方法是继承自models.Model
  • 用 模型类名.objects查看对应表里面的数据(注意:是模型类名,而不是上面的变量名b),eg:查看id=1的记录:b2 = BookInfo.objects.get(id=1),b2是一个BookInfo类的对象。即:把查出来的数据是保存在一个对象里面,然后可以用类似:b2.btitle查看btitle对应的数据
  • 更改数据:b2.bpub_date = date(1990,10,10),即:直接更改查询的对象的属性值即可,然后用b2.save()将保存同步到数据库
  • 如何删除一条记录:b2.delete()

建立两张表之间的关系:外键

注意:往“多”类的属性里面赋值的时候,相关联属性其对应值必须是与其关联的类的对象,eg:

Python_Django框架 Python_Django框架注意:这里的heroinfo是小写

查询表中的所有内容:类名.objects.all(),返回的是一个列表,其中的元素为每一条数据的对象

后台管理

在所创建应用的对应文件夹下,有一个admin.py,(eg:本案例中为:/myProject/booktest/admin.py)通过它,我们实现后台的管理

步骤:

  • 本地化

    • 语言和时区的本地化:修改settings.py文件
      Python_Django框架
    • 注册模型类

      在应用下的admin.py中注册模型类,告诉django框架根据注册的模型类来生成对应表管理页面

    admin文件:

    Python_Django框架但是注意:表中的记录名为对应对象的字符串,如何使其显示我们能够看懂的内容:重写str方法,eg: Python_Django框架
    • 自定义管理页面:自定义模型管理类。模型管理类就是告诉django在生成的管理页面上显示哪些内容(比如,我们让其在浏览 器中显示图书名称的同时显示出版时间)

    视图(V)

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

    视图函数的使用

    一、定义视图函数

    在应用下的views.py中,eg:定义一个名为index的视图函数(注意:视图函数必须有一个参数:request)

    二、进行url的配置

    首先我们要在应用对应的目录下建立urls.py文件,然后在其中创建一个列表,如下:

    同时,我们也需要在项目的urls里面添加配置项

    效果图如下:

    Python_Django框架
    注意:在应用的urls文件中进行url匹配的时候,一定要严格匹配开头结尾,避免出现意外

    模板(T)

    django中的模板不仅仅是个html文件,还可以在其中定义变量,也可以写类似于编程语言的语句

    模板文件的使用

    • 创建模板文件夹(通常是在项目文件夹下创建templates)

    • 配置模板目录(在项目的settings.py文件下),如下:

      Python_Django框架
    • 使用模板文件

      • 加载模板文件:去模板目录下面获取html文件的内容,得到一个模板对象(通常,不同的应用会用到不同的模板文件,所以我们会再在templates下面建立与应用名同名的文件夹,用以存储该应用用到的模板文件)
      • 定义模板上下文:向模板文件传递数据,即:如果模板中使用了变量,需要将变量的数据给他
      • 模板渲染,读出变量后,将变量的位置替换掉,即得到一个标准的html文件

    eg:

    模板文件:

    html lang="en">head>    meta charset="UTF-8">    title>模板文件title>head>body>    h1>这是一个模板文件h1>    p>我在这里使用了模板变量,在模板中使用变量,如果不是在代码段内,就要使用两个花括号括起来:{{content}}p来源:jxvl假装
                                                            

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月4日
下一篇 2019年7月4日

相关推荐