python web界面模板_Python简单轻量级Web Server模块Bottle

2023-11-15

Bottle

提示:使用此WEB服务器模块需要有基本的HTTP知识

简单、轻量级指的是:上手不难、容易使用、模块不大还能完成一般Web服务器的功能。Bottle是Python平台的轻量级Web Server(准确的说是HTTP Server)模块,没有其它依赖库,支持Post/Get提交数据、上传文件等功能,还支持简单的网页模板。基本处于常用功能都有,但每个方面都跟专业有很大差距的情况,所以它的定位就不是取代专业Web Server的。

Bottle官方网址 bottlepy.org   英文文档全面。配置语法虽多但都不难

我自己拿Bottle是用来代替 tkinter 界面。在Python中如果编写一个TK界面,在处理大量列表数据时,界面拉伸总需要改来改去的。而且界面越高级,tkinter越繁杂,都不如直接用TCL/TK画界面再调用Python了。但这样处理Python的返回结果又很麻烦,所以干脆就换Web界面来管理Python程序。Bottle在小局域网几个人用没问题,没做过负载测试(看Bottle源码,使用的是threading线程)。

Bottle的使用方法跟Java平台的JLhttp很像(Java轻量级Web伺服器),但是我感觉JLhttp在国内好像用的人也不多,如果你没听说过就把这句忽略吧。

import bottle

@bottle.route('/')

def 首页():

return "Hello World!"

bottle.run(host='localhost', port=8080, debug=True)

解释一下上面几段代码的含义,导入bottle模块。Bottle使用了@装饰器语法来进行配置,从语法角度来说增加了初学者的负担(毕竟不像Java注解那么多),但bottle这里很节省代码量。

@bottle.route('/') 表示接下来的自定义函数负责处理网站"/"根目录的请求。网站和HTTP基础知识我就不解释了。

def 首页():  自定义函数,函数名随意起,懒得写注释,我用bottle时所有的函数名都是中文写明用途。

return "Hello World!"   这里表示返回给网页的内容,正常应该是html代码。

上面三句体现了Bottle的模式:@装饰器声明哪些网址(网站路径)要被处理。紧接的def函数处理相关的网址;处理完毕后return结果。

bottle.run(host='localhost', port=8080, debug=True)  网站配置完毕后,启动bottle伺服器。

host表示接受的IP地址(localhost表示本机)。port表示绑定的端口。debug表示有问题时显示详细错误。

一些使用例子

静态网页

return bottle.static_file('index.html', 静态页所在的文件夹路径)

静态文件自动映射

@bottle.route('/')

def 静态文件自动映射(filepath):

return bottle.static_file(filepath, 文件夹路径)

这是自动映射网页的静态内容,比如html网页、图片、js脚本和css等等。一般网页都需要很多静态内容,如果都像上面那么映射就没法活了。

特别需要注意的是,如果有其它子目录映射,根目录的静态文件映射必须放在子目录映射之后,否则会拦截子目录的映射。

接受Post信息

@bottle.route('/posttest', method='POST')

def 接收信息测试():

if not bottle.request.forms.get('postxinxxi'):

return "信息为空!"

@表示在posttest网址上接收网页发来的post信息。注意,此时直接访问posttest网址是无效的。

POST数据通过bottle.request.forms.get('postxinxxi')来取得,本例中网页端发来的数据ID是postxinxxi。

双装饰器,即接受数据也可以访问

@bottle.route('/Ptest')

@bottle.route('/Ptest', method='POST')

def XXXX……

上面提到接收POST数据的网址不能直接访问,如果想要一个网页即可以访问也可以接收数据,就需要用双装饰器。

文件上传(借用官方例子)

@route('/upload', method='POST')

def 文件上传并通过后缀扩展名验证上传类型():

upload = request.files.get('upload')

filename, 后缀扩展名 = os.path.splitext(upload.filename)

if 后缀扩展名 not in ('.png','.jpg','.jpeg'):

return '上传文件类型错误'

upload.save(保存文件的路径bottle自动在路径后追加文件名)

return '上传成功'

比官方例子有精简,突出了上传部分,获取上传内容通过request.files.get实现。其它重点部分都改成中文放在代码里了,希望你们能看懂。此外关于request的类型,官方文档里有详细的列表:

网页模板

bottle.TEMPLATE_PATH = 模板目录

先需要设定模板目录,然后在def自定义函数中return部分指定模板

return bottle.template('模板文件名,不用写后缀', zidingyi='自定义的模板字段')

模板部分要细说有点长,我大概介绍下流程:先创建HTML文件,然后在HTML需要动态变换的部分添加{{!zidingyi}}这样的自定义字段。在Python程序里计算自定义字段的最终值,并在return时,指定刚才建立的模板文件名,并且把最终值赋值给zidingyi,模板显示的时候{{!zidingyi}}那里就会变成Python给的最终值。

此外模板还支持一部分Python语法,详细用法看官方文档吧。教程是渐进式的,每看一部分就可以使用一些功能。

更多的Cookie、插件等内容我没有用到,请去官方文档查看。文档虽然不是面面俱到但都是渐进式的,而且每部分都配合代码例子,对照观看还是很容易的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python web界面模板_Python简单轻量级Web Server模块Bottle 的相关文章

  • 使用yum命令安装jdk1.8没有jps命令

    问题 使用yum命令安装jdk1 8后 不能使用jps 这是由于没有openjdk devel这个包 使用yum命令下载 yum install java 1 8 0 openjdk devel x86 64 下载完成之后就可以使用jps命
  • Leetcode 刷题笔记(二十八) ——动态规划篇之子序列问题:连续子序列和不连续子序列

    文章目录 系列文章目录 前言 题录 53 最大子数组和 674 最长连续递增序列 300 最长递增子序列 718 最长重复子数组 1143 最长公共子序列 1035 不相交的线 系列文章目录 一 数组类型解题方法一 二分法 二 数组类型解题
  • LSTM原理及实现

    LSTM网络 LSTM核心思想 逐步理解LSTM 遗忘门 输入门 输出门 LSTM变体 多层LSTM LSTM实现手写数字 设置LSTM参数 初始化权值参数 训练 参考资料 前面我们介绍了RNN 现在我们来介绍一种特殊的RNN结构 LSTM
  • 如何用python编写程序打开csv格式文件

    目录 1 用pandas库打开 2 用python内置函数打开 1 用pandas库打开 用如下例子说明 import pandas as pd import os import csv data dir D a user file fna
  • Python 面向对象(三)

    6 3 多态 多态就是同一个对象在不同情况下有不同的状态出现 多态不是语法 是一种设计思想 多态性 一种调用方式 不同的执行效果 多态 同一事物的多种形态 动物分为人类 猪类 狗类 多态和多态性 Mixin设计模式 主要采用多继承方式对类的
  • Android 在已有工程中实现微信图片压缩

    这个我们需要自己去编译 但是已经有人帮我们编译好了 压缩算法也已经实现 因此 我们去下载然后编译即可 https github com bither bither android lib 首先将上面下载好的已经编译好的libjpeg放到jn
  • xubuntu+树莓派4:绕过登录界面,自动登录,直接进入系统

    二郎为什么要做这个呢 因为二郎想让树莓派直接运行起来 不要再去点击登录了 做这个的时候二郎找了很多网上的教程 发现普遍存在的问题是 不注明系统 一顿乱说 跟本解决不了问题 而且容易把系统搞崩 这里二郎再声明一遍 该方法适用于树莓派4系统安装
  • 文科生转行数据分析,分享我的大数据培训经历

    以下文章转载自一位培训数据分析小伙伴的分享 对于很多想转行学习大数据技术 参加大数据培训的小伙伴们 可以参考参考 很多人不敢承认自己是培训出来的 我今天来简单讲讲我参加数据分析培训的经理 大家有什么疑问的可以留言交流 我目前在四川一家大型移
  • 使用纯flutter3.0版本,2个dart文件,搭建ChatGPT简易版聊天客户端程序(含openai与api2d版本)

    文章目录 1 效果展示 2 按钮的搭建 1个组件 3 聊天窗口的搭建 1个dart 4 API请求的实现 1个dart 使用纯Flutter 3 0版本 仅需2个Dart文件 即可搭建ChatGPT简易版聊天客户端程序 包括OpenAI与A
  • CoreDNS篇9-kubernetes插件

    CoreDNS作为现阶段k8s的默认DNS服务以及服务发现的重要一环 其内置的kubernetes插件可谓是举足轻重 本文主要讲解介绍CoreDNS内置的核心插件kubernetes的使用方式和适用场景 CoreDNS的kubernetes
  • (1)哈希函数资料的整理

    一 哈希函数是什么 哈希函数 又叫散列函数 散列算法 是一种从任何一种数据中创建小的数字 指纹 也叫做摘要 的方法 什么意思呢 就是说 你输入任何长度 任何内容的数据 哈希函数输出固定长度 固定格式的结果 这个结果类似于你输入数据的指纹 只
  • Unity3d 发布打包后无法运行exe 报错Failed to load mono解决

    问题 点击运行发布后的 exe就会出现如下错误 解决 原来生成的包里的文件夹在拷贝时少拷了MonoBleedingEdge文件夹 我记得以前的生成包是没有这个文件夹的 这里需要将该文件夹一起拷贝 就可以解决该问题
  • DNS服务器的原理

    DNS服务器的原理 DNS Domain Name System 域名系统的简写 它是一种基于tcp upd的服务 同时监听在TCP和UPD的53号端口 刚开始 网络刚诞生的时候 只有很少的计算机接入网络 而随着个人PC的发展 网络成爆炸性
  • 过压过流保护芯片

    过压保护 负载如果是阻性负载 当电源有故障 负载上的电压有可能大幅上升 而电流的上升值不一定能超过过流保护值 此种情况宜用过压保护 例如工作在5V 可将电压保护值调至5 5V 如果电源故障只要电压升至5 5V时 电源会自动切断电压输出 2
  • TCP详解(2):三次握手与四次挥手

    TCP Transmission Control Protocol 传输控制协议 是基于连接的协议 也就是说 在正式收发数据前 必须和对方建立可靠的连接 就好像你给别人打电话 必须等线路接通了 对方拿起话筒建立了连接才能相互通话 一个TCP
  • 记一次挖矿病毒应急响应事件

    应急主机排查 近日 我们的安全技术人员安全检查过程中发现一组内网主机存在与外部互联网地址异常通讯行为 以下是对其中一台主机挖矿应急处置分析 查看Windows任务管理器 发现该主机的CPU使用率为100 结合实际业务情况初步判断该主机存在异
  • SQL注入(3)——SQLMAP

    本专栏是笔者的网络安全学习笔记 一面分享 同时作为笔记 前文链接 WAMP DVWA sqli labs 搭建 burpsuite工具抓包及Intruder暴力破解的使用 目录扫描 请求重发 漏洞扫描等工具的使用 网站信息收集及nmap的下
  • yum软件安装

    yum软件安装 1 软件安装卸载 安装rpm包 显示详细信息和进度条 rpm ivh vsftpd 3 0 2 25 el7 x86 64 rpm 查看vsftpd安装情况 rpm q vsftpd 删除已安装软件 rpm e vsftpd
  • uniapp返回上一页,回到顶部实现【记录】

    CSS样式中传入变量 鑫动了的主页 欢迎各位小伙伴 前端小白的成长之路 一起学习 一起成长 在返回上一页时如果不想停留在当前位置 想点击或者自动回到顶部可以用下面的方法 注 使用了scroll view并设置高度时再使用 uni pageS

随机推荐

  • nginx worker_connections exceed 1024 修改

    玩nginx配置的朋友 有时会见到这个提示 warn 3660 0 20000 worker connections are more than open file resource limit 1024 原来安装好nginx之后 默认最大
  • 对多态的理解

    1 虚函数 定义 前面有virtual关键字的成员函数就是虚函数 2 什么是多态 一 将派生类的指针赋给基类指针 则可通过基类指针调用派生类的同名虚函数 include
  • Qt项目实战杂谈一二:网页/应用嵌入技术

    这一篇 应该说是满满的诚意了 很早之前就有完成此篇的打算 奈何一直没有时间 要么是沉迷于编码无法自拔 要么就是执着于释放身心的游戏而偷偷爽快不已 今天 我们说说老牌软件的一个趋势 和对应的某些技术细节的实现点 可能有点长 看这写吧 过长可能
  • The type or namespace name '****' could not be found (are you missing a using directive or an assemb...

    错误的提升内容 具体情况 本人出现这种问题的情况是这样的 本人解决方案的主 exe项目的目标框架情况如下 而 该项目所依赖的附加类库项目的目标框架为 4 5 造成在 exe项目中 无法识别所引用的类库 而出现下图左所示的黄色三角形标志 此外
  • 问题解决:记录一次Linux服务器根目录突然爆满

    一 出问题了 过了个双休来到公司 同时发现Linux终端的服务器状态中根目录空间直接爆满100 周五走之前根目录仅仅使用了59 同时项目服务的后台不停的有日志打印 而且测试的小伙伴说系统登录不上去了 下面记录一下个人排查并解决这个问题的全过
  • 解决电脑无法通过网线直连海康摄像机的问题

    一 现象 通过博主的另外一篇博客https blog csdn net u014552102 article details 86700057 配置完海康网络摄像机后 摄像机可以通过路由器wifi传输视频声音 并通过手机客户端和电脑客户端播
  • VUE项目本地运行调试遇到问题,npm run,install 报错

    IDE 随意选择 太多了 VSCode webstorm 一 安装node js npm vue cli 这三个东西教程挺多的 我这里就不详细说了 我之前开发的时候安装过 查看当前电脑上有没有安装 注意V的大小写 node v npm v
  • Vue.js怎么给文本域赋默认值,和获取输入的值

    Vue js怎么给文本域赋默认值 一般给文本域赋初值用于修改某个东西 需要获取默认值 可以用v model来完成
  • Sublime Text 3 文本编辑器软件

    为什么80 的码农都做不了架构师 gt gt gt http www xiazaiba com html 24343 html Sublime Text 2 设置文件详解 http linux cn article 799 1 html S
  • 45类商标分类表明细表

    商标注册分类采用的是尼斯分类 尼斯联盟成员国采用 商标注册用商品和服务国际分类 尼斯分类将商品和服务分成45个大类 其中商品为1 34类 服务为35 45类 商标局将尼斯分类的商品和服务项目划分类似群 并结合实际情况增加我国常用商品和服务项
  • SpringBoot使用多数据源时怎么解决事务不生效问题

    在使用多数据源时 如果不进行特殊处理 可能会出现事务不生效的问题 这是因为 Spring Boot 默认只会为一个数据源创建一个事务管理器 如果要使用多个数据源 就需要为每个数据源创建一个事务管理器 并在需要使用事务的方法或类上指定使用哪个
  • Istio Pilot源码学习(二):ServiceController服务发现

    本文基于Istio 1 18 0版本进行源码学习 4 服务发现 ServiceController ServiceController是服务发现的核心模块 主要功能是监听底层平台的服务注册中心 将平台服务模型转换成Istio服务模型并缓存
  • linux环境下设置用户密码过期期限

    关于密码过期时间和用户过期时间的设置 通常使用chage命令和usermod命令 设置某个用户的过期时间 accountexpires 可以用usermod e来设置 查看某个用户的密码 passwordexpires 过期时间等信息 可以
  • Java里Controller层参数不必填

    public Result
  • KNN算法的一个回归应用分析

    介绍 在我所接触的机器学习算法中 KNN是一种相对来说较容易理解的算法 但是它在实际中仍有十分广泛的应用 KNN算法可以用于分类和回归问题 在分类问题中应用较多 虽然KNN很少用于回归问题 但对于连续的变量仍有很好的效果 下面我们来介绍KN
  • 一篇打通,pytest自动化测试框架详细,从0到1精通实战(一)

    前言 pytest单元测试框架 1 什么是单元测试框架 单元测试是指在软件开发当中针对软件的最小单位 函数 方法 进行正确性的检查测试 2 单元测试框架有哪些 Java junit 和 testing python unittest 和 p
  • 整理了一些常用的免费api接口,不限次数,收藏备用~(持续更新...)

    API Application Program Interface 被定义为应用程序可用以与计算机操作系统交换信息和命令的标准集 一个标准的应用程序界面为用户或软件开发商提供一个通用编程环境 以编写可交互运行于不同厂商计算机的应用程序 AP
  • ISP_matlab

    确定输入是否为结构体数组字段 MATLAB isfield MathWorks 中国 对话框打开文件 获取路径和文件名 file path uigetfile raw RAW fid fopen fullfile path file htt
  • 百度通用翻译api使用

    官方api文档 http api fanyi baidu com api trans product apidoc springboot demo地址 https github com Blankwhiter translate 第一步 注
  • python web界面模板_Python简单轻量级Web Server模块Bottle

    Bottle 提示 使用此WEB服务器模块需要有基本的HTTP知识 简单 轻量级指的是 上手不难 容易使用 模块不大还能完成一般Web服务器的功能 Bottle是Python平台的轻量级Web Server 准确的说是HTTP Server