2

我是一个新手 python 程序员,我很难找到一个工具来帮助我从 javascript 中获取表单。我在 python 中编写了一个小脚本,并且在 javascript 中完成了一个简单的界面。用户需要在浏览器中选择一些项目,然后 javascript 返回一个 sendForm()。然后我想用我的 python 脚本恢复表单。我知道我可以使用 javascript 生成一个 xml 文件并告诉我的 python 脚本等到它创建然后捕获它(使用 os.path.exist(..))但我想避免这种情况。我已经看到诸如 cgi、mechanize、pyjs、(selenium?) 之类的库可用于接口 python 和 html、javascript,但我找不到使用哪个库,或者是否有另一种工具可以轻松处理恢复表单。

更多信息:python 脚本生成一个由 javascript 读取的 xml。用户在 javascript 中选择项目(带有复选框),然后由 javascript 在 xml 中进行标记。然后javascript在隐藏字段中输出修改后的xml,我希望在创建后用我的python脚本检索这个修改后的xml。

非常感谢大家的帮助

4

2 回答 2

2

感谢评论中的澄清。由于您正在构建一个网站,因此您需要使用 AJAX 来调用 python Web 应用程序并返回一些内容(在您的情况下可能是 XML,尽管我建议您阅读有关 JSON 的内容)。在我看来,您还没有解决问题的最佳方法,但这是另一个问题。我不明白你为什么要麻烦地用 python 生成 xml,用 JavaScript 读取它,用 JavaScript 更新它,然后在提交表单时用 Python 再次读取它。首先,想想如果您的用户禁用 JavaScript 会发生什么。

无论如何,我建议阅读有关FlaskjQuery的内容来开始。然后,您的应用程序在 python 中可能看起来像这样:

from flask import Flask
app = Flask(__name__)

@app.route('/', methods=['POST', 'GET'])
def foo():
    if request.method == 'GET':
        # Generate the XML
        return myXML
    if request.method == 'POST':
        # Read that hidden field
        xml = request.form['the_hidden_xml']
        # Do what you will
        return render_template('homepage.html')

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

JavaScipt 可能会这样做:

function buildTheForm() {
    $.get('/', function(data) {
        // handle the xml in data
        alert('Load was performed.');
    });
}

The form probably does this:

<form action="/" method="post">
于 2012-07-09T14:13:07.987 回答
0

您的系统是 Web 应用程序吗?如果是,您的 javascript 可以使用 ajax 发布到 python 后端。然后您可以将表单加密为 json 字符串并发送到后端,在后面您可以将该字符串解析为 python 变量... Javascript 它本身无法访问您的本地文件,除非您在本地运行它(但它确实是有限)

我建议你应该尝试像 Django 这样的网络框架工作。一天之内就能轻松学会。

于 2012-07-08T14:28:59.800 回答