当前位置: 首页 > 知识库问答 >
问题:

将数据从HTML表单发送到Flask中的Python脚本

令狐运珧
2023-03-14

我的Python脚本中有以下代码:

def cmd_wui(argv, path_to_tx):
    """Run a web UI."""
    from flask import Flask, flash, jsonify, render_template, request
    import webbrowser
    app = Flask(__name__)


    @app.route('/tx/index/')
    def index():
        """Load start page where you select your project folder
        or load history projects from local DB."""
        from txclib import get_version
        txc_version = get_version()
        prj = project.Project(path_to_tx)

        # Let's create a resource list from our config file
        res_list = []
        prev_proj = ''
        for idx, res in enumerate(prj.get_resource_list()):
                hostname = prj.get_resource_host(res)
        username, password = prj.getset_host_credentials(hostname)
        return render_template('init.html', txc_version=txc_version, username=username)

另外,我在init.HTML中有一个HTML表单:

<form>
<input type="text" id="projectFilepath" size="40" placeholder="Spot your project files">
<input type="button" id="spotButton" value="Spot">
</form>

当用户在我的python脚本中的变量上单击“SpotButton”时,我如何传递来自“ProjectFilePath”的用户输入?

我对Python和Flask是个新手,所以如果我有任何错误请原谅。

共有2个答案

敖和韵
2023-03-14

您需要一个接收POST数据的Flask视图和一个发送POST数据的HTML表单。

from flask import request

@app.route('/addRegion', methods=['POST'])
def addRegion():
    ...
    return (request.form['projectFilePath'])
<form action="{{ url_for('addRegion') }}" method="post">
    Project file path: <input type="text" name="projectFilePath"><br>
    <input type="submit" value="Submit">
</form>
郦昆
2023-03-14

form标记需要设置一些属性:

  1. action:提交时将表单数据发送到的URL。使用URL_FOR生成它。如果同一个URL处理显示表单和处理数据,则可以省略。
  2. method=“POST”:使用POST方法将数据作为表单数据提交。如果未给出或显式设置为GET,则数据将在查询字符串(request.args)中以GET方法提交。
  3. enctype=“multipart/form-data”:当表单包含文件输入时,必须设置此编码,否则文件将无法上载,Flask也看不到它们。

input标记需要一个name参数。

添加一个视图以处理提交的数据,该视图位于request.form中与输入的name相同的键下。任何文件输入都将在request.files中。

@app.route('/handle_data', methods=['POST'])
def handle_data():
    projectpath = request.form['projectFilepath']
    # your code
    # return a response

使用URL_FOR将表单的操作设置为该视图的URL:

<form action="{{ url_for('handle_data') }}" method="post">
    <input type="text" name="projectFilepath">
    <input type="submit">
</form>
 类似资料:
  • 问题内容: 我的Python脚本中有以下代码: 另外,我在init.html中有一个HTML表单: 当用户在python脚本中的变量上单击“ spotButton”时,如何传递来自“ projectFilepath”的用户输入? 我是Python和Flask的新手,所以如果我犯任何错误,请原谅我。 问题答案: 该标记需要两个属性进行设置: :表单数据在提交时发送到的URL。用生成它。如果相同的UR

  • 我正在尝试在我的网站上实现一个拖放文件上传器。文件被删除后立即上传,我想生成一个URL与flask将弹出在预览。我正在使用Dropzone.js。在dropzone的文档中,提供了一个示例,作为将数据从服务器发回并在文件上载后显示的指南。https://github.com/enyo/dropzone/wiki/faq#i-want-to-display-additution-informatio

  • 问题内容: 我想知道是否有一种方法可以从HTML的文本框中获取内容,将其输入flask,然后使用Python解析该数据。我以为这可能涉及一些JS,但我可能是错的。有任何想法吗? 问题答案: 除非你想做更复杂的事情,否则将数据从HTML表单输入Flask非常简单。 创建一个接受POST请求()的视图。 访问字典中的表单元素。

  • 问题内容: 我有一个HTML表单,其中包含多个像这样命名的输入: 在PHP中,你可以将其作为数组获取,但是在Python中,使用Flask的方式是否相同? 我已经试过了: 但这没有用,我得到了400 Bad Request: 如何在Flask中进行操作? 问题答案: 你遵循的PHP约定是在字段名称中添加方括号。它不是Web标准,但是因为PHP开箱即用,因此很流行。Ruby on Rails也使用它

  • 问题内容: 我正在使用Flask创建一个网站,并且希望能够使用页面中的数据执行python代码。我知道我可以简单地使用表单,但是它是一个页面,它在接收用户输入时会不断更新,并且每次发生任何事情时都要重新加载页面,这是一个很大的麻烦。我知道我可以在javascript内执行操作,但是如何使用js变量在javascript内执行操作?到目前为止,我唯一能想到的就是用js更新外部数据库(如MongoDB

  • 问题内容: 我必须将数据从html页面(带有很少输入文本字段的简单形式)发送到页面控制器,然后再发送到数据库。我正在使用3.0版的百里香2.0.17。我搜索并检查了一些解决方案,但是没有用。也许有人遇到了同样的问题,并找到了一些好的解决方案。请帮忙。谢谢 问题答案: 如本教程所建议,你需要使用,并在中创建一个表单。 看起来像这样: 控制器: HTML: Foo.java: 希望这可以帮助。