【问题标题】:Running Python code from an HTML form从 HTML 表单运行 Python 代码
【发布时间】:2012-07-26 08:04:19
【问题描述】:

我正在使用 webpy 制作一个 Web 服务器,现在我有一个简单的表单和一个我写的特殊类。我希望用户能够在表单中编写代码,如果输入是函数调用,则调用用户提交的函数,否则如果输入不是函数调用,则对输入执行任何操作。我相信这必须在模板文件的某个地方实现?任何帮助将不胜感激

【问题讨论】:

    标签: python html web.py


    【解决方案1】:

    创建一个 Python cgi 脚本并在您的网络服务器的 cgi-bin 中运行它。 Here is a tutorial. 然后脚本可以访问表单的输入并使用它做任何你想做的事情。

    【讨论】:

    • cgi 模块也很有帮助,尤其是在访问表单时。
    【解决方案2】:

    如果我理解正确,您正在寻找一种在服务器上运行客户端提交的代码并从表单获取输入的方法。

    所以假设你有一个看起来像这样的表单模板(注意 textarea 元素的名称):

    <form method="POST">
    <textarea name="code" />
    <input type="submit">
    </form>
    

    您需要在页面类中添加一个 POST 方法来处理输入并运行代码:

    class MyPage:
        def POST(self):
            data = web.input()
            eval(data.code)
    

    你应该使用一个你不完全信任的任何人都可以访问的表单做的事情,因为它可以在你的网络服务器上运行他们想要的任何代码(例如他们可以轻松地尝试删除服务器上的所有文件)。但是,如果您对安全风险感到满意或只是在玩玩,请务必阅读 Python 文档eval 以查看您可以传递给它的其他参数。

    【讨论】:

    • 我想我遇到了我的表单实现方式的问题,使用 webpy 我在服务器上渲染了一些表单:my_form = web.form.Form(web.form.Textbox('code',class_='code',id='code') 并在模板中:&lt;form class="form" method="POST"&gt; $:form.render() &lt;input class="button" type="submit" value="send"/&gt; &lt;/form&gt; 的第一个参数web.form 对象应该是表单名称,但是当我调用 data.code 时出现属性错误:代码
    • 没关系,我现在可以访问表单了,我只是遇到了语法问题并在 webpy 中使用 eval
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多