• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Django介绍与安装

Python框架 彭东稳 7年前 (2017-10-09) 19327次浏览 已收录 0个评论

一、Django介绍

具体介绍Django之前,必须先介绍web框架等概念。web框架简单来说就是别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。

Django的主要目的是简便、大而全、快速地开发。其优缺点也很明显:

优点:

  • 自带轮子众多,方便快速开发,如ORM、Auth、Cache、Template、Form等核心组件。
  • 实用的后台管理,自带了一个后台管理界面。
  • 简洁的URL设计,都是使用正则匹配即可。
  • 周边的插件丰富。
  • 插拔式App设计模式。
  • 天生的MVC设计模式(更确切的说是MTV)

缺点:

  • Django大而全,所以就是重,也是他的设计哲学,开发者可能会用到的功能都会当做核心模块做进系统,不像Flask这种都是模块化,可选择安装,Django都是必须安装。
  • 系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如下面将要说的ORM、Template。要在Django 里用SQLAlchemy或Mako几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。
  • Django自带的ORM远不如SQLAlchemy强大,除了在Django这一亩三分地,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,比如Flask,唯独Django仍然坚持自己的那一套。Django的开发人员对SQLAlchemy的支持也是有过讨论和尝试的,不过最终还是放弃了,估计是代价太高且跟Django其它的模块很难合到一块。
  • Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现Tag或Filter。而Flask使用Python非常流行的jinja2模板。

Django架构总览图,如下:

Django介绍与安装

其它基于python的web框架,如tornado、flask、webpy都是在这个范围内进行增删裁剪的。例如tornado用的是自己的异步非阻塞“wsgi”,flask则只提供了最精简和基本的框架。Django则是直接使用了WSGI,并实现了大部分功能。

MVC模式

Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。它们各自的职责如下:

层次
职责
模型(Model),即数据存取层
处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
视图(View),即表现层
处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
模板(Template),即业务逻辑层
存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

从以上表述可以看出Django视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django模板仅仅决定如何展现Django视图指定的数据。或者说, Django将MVC中的视图进一步分解为Django视图和Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。

至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作。在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。只需要编写非常少的代码完成很多的事情。所以,它比MVC框架考虑的问题要深一步,因为我们程序员大都在写控制层的程序。现在这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。

二、Django安装

CentOS平台使用

检查django

Django中文文档:https://yiyibooks.cn/xx/Django_1.11.6/index.html


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!