Python自动化运维入门必看系列之:Django架构介绍

01

“我”为什么需要学习Django呢?

自动化运维简单来看,就是用户在前台页面输入关键信息,后台自动生成所需要的东西或者实现某个需求。最终目标是通过机器去“修理”机器,学习自动化运维到了一定的阶段其实是跟AI离不开的。现在很多的自动化运维基本上都停留在半自动化,等需要真正自动化运维的时候,系统将会越来越复杂,

那良好的交互对于避免复杂是非常重要的。使用Django架站是一个不错的选择,等我们学习Django之后,再修行ansible等自动化软件,会有意外的惊喜喔!

下面我开始结合自己的学习笔记,跟大家分享Django架构的知识吧。(如有错误,请各位老铁指出!)

02

Django架构介绍

Django架站有两种架构,一是MVC架构,而是MTV架构。Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同.

Django MVC架构

Model(模型)

包含系统中的数据内容,通常以数据库的形式来存储,如果数据有变动,则通知View实时改变现实的内容,还有一些处理数据的程序逻辑也在这里。

View(视图)

创建和用户之间的界面,把用户的请求传给Controller,把按照Controller的要求把来自Model的数据显示出来。

Controller(控制器)

接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带。

MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。

Django MTV架构

Model(模型)

即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

Template(模板)

即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。

View(视图)

即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。

Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

03

Django特性

采用ORM方式存取数据库的数据,数据库抽象化,网站设计基本不需要使用SQL查询语言。

日后如需更换数据库,无须修改大量程序代码。

用过MVC架构概念把视图和控制逻辑分开,开发人员不用担心网站通信协议的琐碎细节,而是专心于建立网站的功能。

Python语言处理和运算、操作数据库,让网页请求更加客户化,实时响应。

ORM框架

Django采用ORM方式存取数据库的数据。Python程序中不使用SQL指令存取数据,而是以ORM方式存取数据库的数据。 ORM(Object relational Mapper/Mapping),它是以重面向对象的程序设计技术映射后端数据库。即对数据库的操作方式抽象化为统一用Python的数据操作方式,解决底层数据库兼容性的问题。再简单点说,只管Python的数据操作方式,不需要管底层数据库是Oracle/Mysql/Redis等。

04

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

需求分析不可少。

数据库设计。

了解网站的每一个页面,并设计网页模板(.html)文件。

使用virtualenv创建并启用虚拟机环境。

使用pip install 安装django。

使用django-admin startproject 生成项目。

使用python manage.py startapp 创建app。

创建templates文件夹,并把所有网页模板(.html)文件都放在此文件夹中。

创建static文件夹,并把所有静态文件(图像文件、CSS文件及.js等)都放在此文件夹中。

修改settings.py,把相关的文件夹加入,也把生成的app名称加入INSTALLED_APPS序列中。

编辑models.py,创建数据库表格。

编辑views.py,先import在models.py中创建的数据模型。

编辑admin.py,把models.py中定义的数据模型加入,并使用admin.site.register注册新增的类,让admin界面可以处理数据库内容。

编辑urls.py,先import在views.py中定义的模块。

编辑urls.py,创建网站和views.py中定义的模块的对应关系。

执行python manage.py makemigrations。

执行python manage.py migrate。

执行python manage.py runserver测试网站。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190218G1CW5V00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券