python web框架bottle,flask

本文深入探讨了Python Web框架的基础,介绍了HTTP协议的工作原理及特性,对比分析了Django、Flask和Bottle三大框架的特点与应用场景,通过实例演示了Flask和Bottle的快速上手过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、web框架基础

  web框架的基本工作模式:浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
   HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP协议工作于客户端-服务端架构为上。
  HTTP具有如下特点:

  (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 '<h1>Home</h1>'

# 设计窗口页面(http://localhost:8080/signin)显示 
@app.route('/signin', methods=['GET'])
def signin_form():
    return '''<form action="/signin" method="post">
              <p><input name="username"></p>
              <p><input name="password" type="password"></p>
              <p><button type="submit">Sign In</button></p>
              </form>'''

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

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 '''
        <form action="/login" method="post">
            Username: <input name="username" type="text" />
            Password: <input name="password" type="password" />
            <input value="Login" type="submit" />
        </form>
    '''

@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 "<p>Your login information was correct.</p>"
    else:
        return "<p>Login failed.</p>"

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

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值