Django学习(三)——MVC架构

第四章 Django的MVC框架

4.1 Django的MVC框架简介

MVC是一种软件工程设计方法,它把一个要创建的系统分成三部分,分别是Model数据模块,View视图模块以及Controller控制模块。

Model数据模块:包含系统中的数据内容,通常以数据库的形式来存储,如果这些内容有变动,就会通知View实时更改显示的内容,一些处理数据的程序逻辑也会放在这里。

View视图模块:创建和用户之间的界面,把用户的请求传送给Controller,并按照Controller的要求把来自Model的数据显示出来。

Controller控制模块:派发View传来的用户请求,并按照这些请求处理数据内容以及设置要显示的数据。

好处:大幅地降低系统的复杂性。

Django主要的架构形成了使用Model、Template和View三部分的搭配。这三部分分别对应网站的数据存储model.py、网站的模板文件组(一般放在templates文件夹下的html文件)以及控制如何处理数据程序逻辑的views.py,其中许多控制逻辑也被放在整个Django Framework中,(如urls.py的设置等)。

在此架构下,初学者可以这样看:使用templates来做每个网页的外观框架,送至templates中要被使用的数据尽量是可以直接显示的简单形式。
如果需要对变量进行更复杂的运算,那么这些工作应该放在view.py中完成。

在models.py中定义所有需要用到的数据格式,一般是以数据库的形式来存储的,定义后的Model数据类要把它import到views.py中

主要的操作流程为:用户在浏览器下达request,这个request会先被送到网站服务器中做分派的工作,这个分派的工作指定在urls.py中完成。每一个分派的工作都被设置成views.py中的函数,也就是主要处理数据的逻辑,在views.py中完成。因此所有在urls.py中指派的函数要在urls.py的前面import才行。

在Django MTV架构下的网站开发步骤

  • 需求分析,列出本次网站项目所要实现的目标,包括简单的草图,与功能方块图。
  • 数据库设计,网站中所有会用到的数据内容、格式、以及各个数据之间的关系。减少开始设计程序后修改Model的工作。
  • 了解网站的每一个界面,并设计网页模板(.html)文件
  • 生成项目,创建APP
  • 创建templates文件夹,并把所有网页模板(.html)文件都放在此文件夹
  • 创建static文件夹,并把所有静态文件(图像文件、CSS文件、.JS文件等)都都放在此文件夹中
  • 修改setting.py,把相关文件夹设置都加入,也把生成的app名称加入INSTALLEC_APPS序列中
  • 编辑models.py创建数据表格
  • 编辑views.py先import在models.py中创建的数据模型
  • 编辑admin.py把models.py中定义的数据模型加入,并使用admin.site.register注册新增的类,让admin界面可以处理数据库内容
  • 编辑views.py设计处理数据的相关模块,输入和输出都通过templates相关的模块操作获取来自于网页的输入数据,以及显示.html文件的网页内容
  • 编辑urls.py先import在views.py中定义的模块,创建网址和views.py中定义的模块的对应关系
  • 执行python manage.py makemigration; python manage.py migrate; python manage.py runserver测试网站

4.2 Model简介

首先创建项目:

django-admin startproject mysite
cd mysite/
python manage.py startapp myapp

Model是Django表示数据的模式,以Python的类为基础在models.py中设置数据项与数据格式。基本上每个类对应一个数据库中的数据表。因此,定义每个数据项时,除了数据项名称外,还要定义此项目的格式以及这张表格和其他表格相互之间的关系(即数据关联)。网站的其他数据就可以使用Python语句来操作这些数据内容,而不用关心实际使用的SQL指令。

例:

from django.db import models
class Post(models.Model)
    title = models.CharField(max_length=200)
    slug = models.CharField(max_length=200)
    body = models.TextField()
    pub_date = models.DateTimeField(default=timezone.now)

在参数中应该导入models.Model,然后就可以使用models.* 来指定数据表中的每一个字段的特征。

常用的数据字段类型:

  • CharField(max_length)——用来存储较短数据的字符串,通常使用于单行的文字数据
  • DateField(auto_now)——每次对象被存储时就自动加入当前日期。日期格式可用于datetime.date
  • TextField——长文字格式,一般用在HTML窗体的Textarea输入项目中

首次设置Model的内容要先执行python manage.py makemigrations以及python manage.py migrate

然后系统就会把我们设置的NewTable数据表建立到数据库中,默认是SQLite,也就是存在于同一文件夹下的db.sqlites文件。

会看到0001_initial.py以及__init__.py这两个文件。0001文件就是记录第一次Model设置的数据表内容,因为一开始只有一个设置,所以只有0001这个版本。Django偷偷帮我们加上了一个id字段,设置为主键,并自动增加了数值内容,以便它内部的数据管理。

在admin.py中创建数据表管理界面

在models.py中创建类之后,只要在admin.py中加入这个NewTable,就可以在/admin中管理这张表了(事先要createsuperuser创建管理员账号和密码)

先创建一个产品类(models.py):

class Product(models.Model):
    SIZES = (
        ('S', 'Smaill'),
        ('M', 'Medium'),
        ('L', 'Large'),
    )
    sku = models.CharField(max_length=5)
    name = models.CharField(max_length=2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值