6

リストを取り、リスト内の項目を出力する array と呼ばれるフラスコの関数があります。

def array(list):
    string = ""
    for x in list:
        string+= x
    return string

クライアント側では、str という名前の JavaScript 配列をこの配列に渡したいと考えています。どうすればいいですか?これが私が今持っているものですが、Flaskは追加された変数を読み取っていません。何か案は?

for (var i = 0; i < response.data.length; i++) {
            console.log(i);

            // str = str + "<br/><b>Pic</b> : <img src='"+ response.data[i].picture +"'/>";

            str[i] = response.data[i].picture;
        }
        window.location = "{{ url_for('array', str=list ) }}";
4

1 に答える 1

9

Flask には request という組み込みオブジェクトがあります。要求には、args と呼ばれる multidict があります。

request.args.get('key')クエリ文字列の値を取得するために使用できます。

from flask import request

@app.route('/example')
def example():
    # here we want to get the value of the key (i.e. ?key=value)
    value = request.args.get('key')

もちろん、これには get リクエストが必要です ( postを使用する場合は を使用しますrequest.form)。JavaScript 側では、純粋な JavaScript または jquery を使用して get リクエストを行うことができます。 私の例では jquery を使用します。

$.get(
    url="example",
    data={key:value}, 
    success=function(data) {
       alert('page content: ' + data);
    }
);

これは、クライアントからフラスコにデータを渡す方法です。jquery コードの関数部分は、flask から jquery にデータを渡す方法です。たとえば、/example というビューがあり、jquery 側から "list_name":"example_name" のキーと値のペアを渡すとします。

from flask import jsonify
def array(list):
    string = ""
    for x in list:
        string+= x
    return string

@app.route("/example")
def example():
    list_name = request.args.get("list_name")
    list = get_list(list_name) #I don't know where you're getting your data from, humor me.
    array(list)
    return jsonify("list"=list) 

そしてjqueryの成功関数では、

  success=function(data) {
       parsed_data = JSON.parse(data)
       alert('page content: ' + parsed_data);
    }

フラスコは、セキュリティ上の理由から、json 応答でトップ レベルのリストを許可しないことに注意してください。

于 2013-09-14T07:13:32.927 に答える