Django - QLGQ/learning-python GitHub Wiki
Introduction
Django是由Python开发的一个免费的开源网站框架,可以用于快速搭建高性能、优雅的网站。
web框架介绍
web框架:别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。
一般的web框架的架构是这样的:
其他基于python的web框架,如tornado、flask、webpy都是在这个范围内进行增删裁剪的。例如tornado用的是自己的异步非阻塞“wsgi”,flask则只提供了最精简和基本的框架,Django则是直接使用了WSGI,并实现了大部分功能。
MVC/MTV介绍
MVC:全名为Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
通俗解释:一种文件的组织和管理形式,其实就是把不同类型的文件放到不同的目录下的一种方法。它带来的好处有很多,比如前后端分离,松耦合等等。
- 模型(model):定义数据库相关的内容,一般放在models.py文件中;
- 视图(view):定义HTML等静态网页文件相关的内容,也就是那些html、css、js等前端的东西;
- 控制器(controller):定义业务逻辑相关的内容,就是你的主要代码。
MTV:有些WEB框架觉得MVC的字面意思很别扭,就给它改了一下。view不再是HTML相关,而是主业务逻辑了,相当于控制器。html文件被放在Templates中,称作模板,于是MVC就变成了MTV,但和MVC本质上是一样的。
Django的MTV模型组织
目录分开,就必须有机制将他们在内里进行耦合。在Django中,urls、orm、static、settings等起着重要的作用。一个典型的业务流程是如下图所示:
我们所学的就是:目录结构规范、urls路由方式、settings配置、ORM操作、jinja2模板渲染以及其他。
Django特点
- 强大的数据库功能:用Python的类继承,几行代码就可以拥有一个丰富、动态的数据库操作接口(API),如果需要,你也可以执行SQL语句。
- 自带的强大的后台功能:几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容。
- 优雅的网址:用正则匹配网址,传递到对应函数,随意定义,如你所想。
- 模板系统:强大、易扩展的模板系统,设计简易,代码、样式分开设计,更容易管理。
- 缓存系统:与memcached或其他的缓存系统联用,更出色的表现,更快的加载速度。
- 国际化:完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。
Django全貌
- urls.py:网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
- views.py:处理用户发出的请求,从urls.py中对应过来,通过渲染templates中的网页可以将显示内容,比如登录后的用户名,用户请求的数据,输出到网页。
- models.py:与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候你可以不使用。
- forms.py:表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。
- admin.py:后台,可以用很少的代码就拥有一个强大的后台。
- settings.py:Django的设置,配置文件,比如DEBUG的开关,静态文件的位置等。
- templates文件夹:views.py中的函数渲染templates中的HTML模板,得到动态内容的网页,当然可以用缓存来提高速度。