python web框架bottle,flask

一、web框架基础

  web框架的基本工作模式:浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
   HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP协议工作于客户端-服务端架构为上。
  HTTP具有如下特点:
python web框架bottle,flask_第1张图片
  (1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  (2)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  (3)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  (4)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
  统一资源定位符(Uniform Resource Locator,URL)
统一资源定位符(网址~)URL是统一资源标识符(Uniform Resource Identifiers,URI)的一个特殊类别,是互联网上用来标识某一处资源的地址。一个完整的URL包括以下几部分:协议(http,ftp)、域名(www.xxx.xx)、端口(:8080,非必须)、虚拟目录(/)、文件名、锚、参数。
  主流python web框架:
  1、Django:Django是一个开源的Web应用框架,由Python写成,支持许多数据库引擎,可以让Web开发变得迅速和可扩展,并会不断的版本更新以匹配Python最新版本(新手入门框架建议)。
  2、Flask:Flask是一个轻量级的Web应用框架, 使用Python编写。基于 WerkzeugWSGI工具箱和 Jinja2模板引擎。使用 BSD 授权。Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功 能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
  3、bottle:是Python的一个简单、快速和轻量级的WSGI微型Web框架,整个框架只有一个文件模块,除了Python 标准库之外,没有其他依赖项。
  接受HTTP请求、解析HTTP请求、发送HTTP响应是web服务的基本流程,这些涉及底层代码的都是苦力活,没必要重复造轮子。底层代码可以由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以需要一个统一的接口,让我们专心用Python编写Web业务(这就是web框架要发挥的作用了–>跳过底层的复杂,主要解决的HTML内容响应)。
  参考资料
  1、Web框架的基础原理
  2、Web框架快速入门(URL与控制器模块是关键)
  3、廖大神的Python Web开发教程⭐
  4、win10查看端口占用情况

二、flask

  简单快速的web框架,直接一个小demo吧。

from flask import Flask, request

app = Flask(__name__)

# 主页(http://localhost:8080/)显示
@app.route('/', methods=['GET', 'POST'])
def home():
    return '

Home

'
# 设计窗口页面(http://localhost:8080/signin)显示 @app.route('/signin', methods=['GET']) def signin_form(): return '''

'''
# button设计响应逻辑和返回响应 @app.route('/signin', methods=['POST']) def signin(): # 需要从request对象读取表单内容: if request.form['username']=='admin' and request.form['password']=='password': return '

Hello, admin!

'
return '

Bad username or password.

'
if __name__ == '__main__': # 默认是host:127.0.0.1, port:5000 # http://127.0.0.1:5000 app.run(host="localhost", port=8080)

  参考资料
  1、实战:Flask快速入门
  2、廖神flask示例+模板使用
  3、flask documentation
  4、flask中文文档

三、bottle

  比flask还简单轻量的框架。

from bottle import get, post, request, run # or route

@get('/login') # or @route('/login')
def login():
    return '''
        
Username: Password:
'''
@post('/login') # or @route('/login', method='POST') def do_login(): username = request.forms.get('username') password = request.forms.get('password') if username == "admin" and password == "password": return "

Your login information was correct.

"
else: return "

Login failed.

"
if __name__ == '__main__': run(host="localhost", port=8080)

  参考资料
  Bottle: Python Web Framework(Documentation)


  web框架的学习到此先告一段落了,以后用到再深入实践学习。(如何外网访问bottle、flask搭建的web?比如手机访问。因为它们大多功能是以局域网访问的方式来搭建,有时候想要在手机访问项目,怎么做?get和post请求的区别?)

你可能感兴趣的:(编程随笔)