it-swarm.com.de

Senden von Daten aus einem HTML-Formular an ein Python Skript in Flask

Ich habe den folgenden Code in meinem Python Skript:

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)

Außerdem habe ich ein HTML-Formular in init.html:

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

Wie kann ich die Benutzereingabe von "projectFilepath" übergeben, wenn ein Benutzer auf eine Variable in meinem python script "spotButton" klickt?

Ich bin neu in Python und Flask, also vergib mir, wenn ich Fehler mache.

56

Für das form -Tag müssen zwei Attribute festgelegt werden:

  1. action: Die URL, an die die Formulardaten beim Senden gesendet werden. Generiere es mit url_for. Es kann weggelassen werden, wenn dieselbe URL das Formular anzeigt und die Daten verarbeitet.
  2. method: Gibt an, ob die Daten als Abfragezeichenfolge (GET) oder als Formulardaten (POST) gesendet werden sollen.

Fügen Sie eine Ansicht hinzu, um die Formulardaten zu verarbeiten:

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

Setzen Sie das action des Formulars auf die URL dieser Ansicht:

<form action="{{ url_for('handle_data') }}" method="post">
    <input type="text" name="projectFilepath">
    <input type="submit">
</form>
103
codecool

Sie benötigen eine Flask Ansicht, die POST Daten empfängt, und ein HTML-Formular, das diese sendet.

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>
55
Dawid Drozd