内容简介:在上面的例子里,显示的数据content 是硬编码到代码里的,如果数据存在文件最开始的网站就是这样的,所有数据存在文件里。
【Django 教程1】Web框架
Web框架
Django 是一个Web开发框架,在仔细研究Django之前,先理解下Web框架的作用。 如果没有框架,可以用 Python 提供的库完成一个简单的网站,在页面上显示"Hello World"。运行 下面的代码,然后在浏览器输入:http://localhost:8888/ 就能看到页面上会显示"Hello World". 这是一个HTTP Server, 把我们想要的内容传到了客户端,如果要理解这过程是怎么完成的需要网络和网络协议相关知识。
import http.server PORT = 8888 class MyHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): self.send_response(http.server.HTTPStatus.OK) # can read content from file or database content = b"Hello World" self.send_header("Content-type", "text/html; charset=%s" % "utf-8") self.send_header("Content-Length", str(len(content))) self.end_headers() self.wfile.write(content) def run(server_class=http.server.HTTPServer, handler_class=MyHandler): server_address = ('', PORT) httpd = server_class(server_address, handler_class) httpd.serve_forever() if __name__ == '__main__': print('start server') run()
在上面的例子里,显示的数据content 是硬编码到代码里的,如果数据存在文件 /tmp/test.html
里面我们可以把第9行改成:
content = open('/tmp/test.html','rb').read()
最开始的网站就是这样的,所有数据存在文件里。
如果要根据用户的输入显示不同的内容又该怎么实现呢? 如果用户想修改服务端的数据又该如何? 不同用户登录一个网站会看到不同的内容又该如何实现呢? 我们怎么知道用户是否已经登陆了呢?
上面这些问题,都可以我们自己写代码完成,但这些问题的处理过程都有很多相似支出,而且在不同的地方是通用的,所以我们可以进行抽象。比如上面的 do_GET
方法,我们不确定的只是content的的内容是读数据库还是读文件,但其他的都是一样的,是不是可以提供个接口就好,其他的内容不要每次都写,比如这样
import http.server PORT = 8888 class MyHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): self.send_response(http.server.HTTPStatus.OK) # can read content from file or database content = self.get_content() self.send_header("Content-type", "text/html; charset=%s" % "utf-8") self.send_header("Content-Length", str(len(content))) self.end_headers() self.wfile.write(content) def get_content(self): return b"Hello World" def run(server_class=http.server.HTTPServer, handler_class=MyHandler): server_address = ('', PORT) httpd = server_class(server_address, handler_class) httpd.serve_forever() if __name__ == '__main__': print('start server')
如果要从数据库里读,只需要继承MyHandler 然后重写 get_content
,类似这样的事情,就是Web框架做的,让代码可重用,让工程师更专注的解决业务问题。
如果有Web框架,该如何实现上面的Hello World呢?先用Flask来做例子吧,相对简单。首先安装Flask
pip install Flask
实现如下:
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run(port=8888)
这看起来简单,清爽很多。
Django 简介
为了了解更多Web框架的知识,我想Django是一个比较好的对象,主要有下面几个原因。 Django 是 Python Web开发框架中比较重的一个,而且是一个传统的MVC框架,导致Django不太那么流行,特别是大型的Web应用。但Django封装了很多模块,涉及到Web开发的方方面面,所以如能比较透彻的理解Django 做了哪些封装,为什么要做,如何做到的对全面理解Web开发是有好处的,而且Django对于开发简单的小型应用很有效率。Flask在某种程度上和Django很像,了解Django对了解其他框架,甚至对其他语言的框架也有帮助。另外Django 有比较完善的文档,活跃的社区,官网显示Django社区有来自 162个国家的一万多人。阅读这些文章,需要有Python 的基础知识,有一定的Web知识,知道HTML,CSS,HTTP等等。
以上所述就是小编给大家介绍的《【Django 教程1】Web框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Koa 框架教程
- Nestjs 框架教程(第一篇:简介)
- 性能测试框架 locust 入门教程
- 小白教程|一小时上手最流行的前端框架vue
- RPC框架是啥之Apache CXF一款WebService RPC框架入门教程
- redux-saga框架使用详解及Demo教程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解Nginx
陶辉 / 机械工业出版社 / 2013-4-15 / 89.00元
本书是阿里巴巴资深Nginx技术专家呕心沥血之作,是作者多年的经验结晶,也是目前市场上唯一一本通过还原Nginx设计思想,剖析Nginx架构来帮助读者快速高效开发HTTP模块的图书。 本书首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍如何开发HTTP模块(含HTTP过滤模块)来得到定制的Nginx,其中包括开发一个功能复杂的模块所需要了解的......一起来看看 《深入理解Nginx》 这本书的介绍吧!