python flask 通过页面输入python代码,执行结果返回页面

news2024/11/27 8:30:07

1,不太好用

 项目结构

 app.py

from flask import Flask, render_template, request
import io
import sys

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/execute', methods=['POST'])
def execute():
    code = request.form['code']
    try:
        # 创建一个新的输出流
        stdout = io.StringIO()
        # 重定向标准输出到新的输出流
        sys.stdout = stdout
        # 执行Python代码块
        exec(code)
        # 获取输出结果
        output = stdout.getvalue()
        return render_template('result.html', output=output)
    except Exception as e:
        error = str(e)
        return render_template('result.html', error=error)
    finally:
        # 恢复标准输出
        sys.stdout = sys.__stdout__

if __name__ == '__main__':
    app.run(debug=True)

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Python Script Execution</title>
</head>
<body>
    <h1>Python Script Execution</h1>
    <form action="/execute" method="post">
        <textarea name="code" rows="10" cols="50"></textarea>
        <br>
        <input type="submit" value="Execute">
    </form>
</body>
</html>

result.html

<!DOCTYPE html>
<html>
<head>
    <title>Execution Result</title>
</head>
<body>
    <h1>Execution Result</h1>
    {% if output %}
        <h2>Output:</h2>
        <pre>{{ output }}</pre>
    {% elif error %}
        <h2>Error:</h2>
        <pre>{{ error }}</pre>
    {% endif %}
</body>
</html>

测试代码

import pytest

def test_001():
    assert 1==1

if __name__ == '__main__':
    pytest.main(['-v','test.py'])

 示例图

 

ps: exec(code) 这里修改过pytestcase内容再次执行的结果没有更新,找个时间再研究下

2,推荐这个

20237172253 优化了一下代码

文件结构 

 app.py

from flask import Flask, render_template, request
import subprocess

app = Flask(__name__)


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/execute', methods=['POST'])
def execute():
    code = request.form['code']
    code2 = code
    # 将代码块保存到文件中

    with open('test_script.py', 'w') as file:
        file.write(code2)
    # 使用 subprocess 模块运行脚本
    result = subprocess.run(['python', 'test_script.py'], capture_output=True, text=True)
    # 输出运行结果
    print(result.stdout)

    return render_template('result.html', output=result.stdout)


if __name__ == '__main__':
    app.run()

templates

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Python Script Execution</title>
</head>
<body>
    <h1>Python Script Execution</h1>
    <form action="/execute" method="post">
        <textarea name="code" rows="10" cols="50"></textarea>
        <br>
        <input type="submit" value="Execute">
    </form>
</body>
</html>

result.html

<!DOCTYPE html>
<html>
<head>
    <title>Execution Result</title>
</head>
<body>
    <h1>Execution Result</h1>
    {% if output %}
        <h2>Output:</h2>
        <pre>{{ output }}</pre>
    {% elif error %}
        <h2>Error:</h2>
        <pre>{{ error }}</pre>
    {% endif %}
</body>
</html>

示例图

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

B071-项目实战-用户模块--手机注册 管理员登录

目录 完成注册功能后端开发完成UserControllerUserServiceImplLogininfoMapper 前端页面完成绑定数据绑定事件准备登录页 管理员登录1需求分析登录设计页面设计表设计流程设计所需技术 员工新增级联操作登录信息EmployeeServiceImplShopServiceImpl 管理员登录2前端页面后端接口…

Learning to cartoonize using white-box cartoon representations

论文笔记--漫画生成--White-box Cartoon Representations - 知乎论文 Learning to Cartoonize Using White-box Cartoon Representations 源码https://github.com/SystemErrorWang/White-box-Cartoonization效果算法概述这篇论文是将图像风格转成漫画风格&#xff0c;作者认为可…

MySQL索引index

目录 1.索引的概念 2.索引的优缺点 3.索引的数据结构 4.索引结构 1.二叉树&#xff1a; ​编辑2.红黑树&#xff1a; 3.BTree&#xff08;B-Tree&#xff09;&#xff1a; ​编辑4.传统BTree&#xff1a; ​编辑5.MySQL中的BTree&#xff1a; ​编辑6.Hash&#xf…

浅谈电子设备之电磁屏蔽箱设计要点

屏蔽箱又称隔离箱、屏蔽盒和电磁屏蔽箱&#xff0c;可以对传导和辐射进行处理&#xff0c;为无线通讯产品生产制造提供高效的隔离测试环境&#xff0c;测试内容包含耦合测试、RF功能测试、电磁干扰测试和电磁兼容性测试。屏蔽箱多采用铝合金材料设计&#xff0c;屏蔽材料阻隔能…

C语言模拟实现字符串处理函数

需要多一点点勇气&#xff0c;来面对变差的自己 大家好&#xff0c;我是纪宁。 这篇文章为大家带来的是5大字符串处理函数的模拟实现。 文章目录 1.strlen函数的模拟实现 2.strcpy函数的模拟实现 3.strcmp函数的模拟实现 4.strcat函数的模拟实现 5.strstr函数的模拟实现…

相机标定-基础(一)

1. 何为相机标定? 当相机拍摄照片时,我们看到的图像通常与我们实际看到的不完全相同。这是由相机镜头引起的,而且发生的频率比我们想象的要高。 这种图像的改变就是我们所说的畸变。一般来说,畸变是指直线在图像中出现弯曲或弯曲。 这种畸变我们可以通过相机标定来进行解…

反常积分题目

目录 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a;​ 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; 我们首先引入反常积分的定义&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/131676865 题目1&#xff1a; 题目2…

STM32 ws2812b多屏驱动程序

文章目录 前言一、ws2812b的数据传输以及屏幕的组合二、代码ws2812screen.c文件ws2812screen.h文件主函数 前言 在上篇文章中使用了stm32的dmatim的方式点亮了ws2812b的灯 但是我的需求不仅仅是点亮他&#xff0c;我需要他像屏幕一样显示某一些东西&#xff0c;ws2812显示有一…

深入学习 Redis - 全局命令、过期策略如何实现、高效定时器原理

目录 Redis 全局命令 get 和 set keys keys 使用注意事项 exists exists 使用注意事项 del del 使用注意事项 expire 【面试经典】redis 中 key 的过期策略是怎么实现的&#xff1f; 定时器实现原理&#xff08;非 Redis 实现&#xff0c;拓展&#xff09; 1.基于 …

21 - 队列 - 循环队列——队列的顺序表示和实现

前面我们学习数组队列,链式队列,我们今天来学习循环队列。 队列的定义 队列(Queue)也是一种线性表, 但是它仅能在一端进行插入,而另一端进行删除的操作 ,插入的一端称为 队尾rear,删除的一端称为 队头front 。 向一个栈插入新元素又称作进队或入队, 从一个栈删除元素…

从实体按键看 Android 车载的自定义事件机制

在汽车数字化、智能化变革的进程中&#xff0c;越来越多的车机设计或部分、或全部地舍弃了实体按键&#xff0c;进而把车主操作的入口转移到了车机 UI 以及语音助手。 但统一、高效的零层级 UI 颇为困难&#xff0c;语音的准确率、覆盖率亦不够完善&#xff0c;那么在当下的阶段…

【数据结构】文件的归并排序

目录 1、归并排序引申出的问题 2、磁盘与文件的关系---包含与被包含的关系 3、思路&#xff1a; 4、代码实现 1、归并排序引申出的问题 归并排序是最常用的外排序的方法&#xff08;但归并排序既可进行内部排序也可进行外部排序&#xff09;&#xff0c;外排序就是在磁盘中…

LLaMA(Open and Efficient Foundation Language Models )论文解读(二)

此篇博客主题:LLAMA模型数据、训练时长、功耗及碳排放量 LLaMA: Open and Efficient Foundation Language Models paper https://arxiv.org/pdf/2302.13971v1.pdf 1 训练样本 Overall, our entire training dataset contains roughly 1.4T tokens after tokenization. For mo…

2023年Q2京东厨卫大电市场分析报告(京东运营数据分析)

随着新产品推广和消费需求升级&#xff0c;今年Q2&#xff0c;京东厨卫大电市场的销售额突破百亿&#xff0c;从同环比来看均呈增长趋势。百亿市场中&#xff0c;油烟机、电热水器、燃气热水器这三大品类占据较大份额&#xff0c;这一期&#xff0c;我们重点来看一下京东厨卫大…

怎么用Postman脚本中发送请求

Postman的Collection(集合)/Folder(集合的子文件夹)/Request(请求)都有Pre-request script和Tests两个脚本区域, 分别可以在发送请求前和请求后使用脚本(基于Javascript实现各种操作) 在遇到有依赖的接口时,比如需要登录或者需要从前一个接口的结果中获取参数时,我们往往需要在…

vscode 调试(linux )

一、配置程序运行依赖 1, 打开配置文件&#xff08;launch.json) (1) 从工具栏打开Run–>Add Configuration… &#xff08;2&#xff09;查看配置文件&#xff08;launch.json&#xff09; 2&#xff0c;添加配置 (1) 配置可执行程序&#xff08;program&#xff09;…

ceph存储的应用

ceph存储的应用 一&#xff1a;创建 CephFS 文件系统 MDS 接口1.服务端操作1&#xff09;在管理节点创建 mds 服务2&#xff09;查看各个节点的 mds 服务3&#xff09;创建存储池&#xff0c;启用 ceph 文件系统4&#xff09;查看mds状态&#xff0c;一个up&#xff0c;其余两个…

reggie优化01-缓存短信验证码和菜品数据

1、缓存短信验证码 1.1 Redis配置类RedisConfig 在config包下&#xff0c;创建Redis配置类RedisConfig&#xff1a; 纳入Git管理&#xff1a; package com.itheima.reggie.config;import org.springframework.cache.annotation.CachingConfigurerSupport; import org.sprin…

接口自动化测试框架unittest和pytest差异比较

前言 说到 Python 的单元测试框架&#xff0c;想必接触过 Python 的朋友脑袋里第一个想到的就是unittest。 的确&#xff0c;作为 Python 的标准库&#xff0c;它很优秀&#xff0c;并被广泛用于各个项目。但你知道吗&#xff1f;其实在 Python 众多项目中&#xff0c;主流的单…

【ROS机械臂入门教程】

首先声明一下&#xff0c;此项目是参考B站哈萨克斯坦UP的【ROS机械臂入门教程】&#xff0c;前期以复现【机械臂视觉抓取从理论到实战】 此内容为他研究生生涯的阶段性成果展示和技术分享&#xff0c;所有数据和代码均开源。所以鹏鹏我又特此来复现一下&#xff0c;我采用的硬件…