2016-10-02 5 views
1

URLを介して番号を渡して別のページで取得しようとしています。変数型を指定しようとすると、不正な形式のURLエラーが発生し、コンパイルされません。 var型を指定しなかった場合、変数は実行されますが、変数は型なしになります。私はintにキャストすることもできません。どうすればIntegerとして渡すことができますか?前もって感謝します。Flask URL変数タイプなし?

これは私に不正なURLエラーを与える:

@app.route('/iLike/<int: num>', methods=['GET','POST']) 
def single2(num): 

これが実行されますが、私に私が働くことができないタイプなしのVARいます:代わりに、あなたの第二の例では

@app.route('/iLike/<num>', methods=['GET','POST']) 
def single2(num): 
    try: 
     location = session.get('location') 
     transType = session.get('transType') 
     data = session.get('data') 

     **num = request.args.get('num')** 
+2

'num'の値は自動的に関数の引数として関数に渡されます。リクエスト引数を取得する必要はありません(これは他の場所にも表示されるため、値を取得できません)。 – poke

答えて

3

ルートで指定するパラメータは、ルートパラメータであり、variable routesを宣言する方法です。これらのパラメータの値は、関数の引数としてルート関数に渡されます。したがって、あなたの場合、<num>のurl部分については、値は関数引数numとして渡されます。

リクエスト引数はルートから独立しており、GETパラメータとしてURLに渡されます。 request objectからアクセスできます。これはrequest.args.get()でやっていることです。

完全な例は次のようになります。

@app.route('/iLike/<int:num>') 
def single2(num): 
    print(num, request.args.get('num')) 

オープニング/iLike/123は今123 Noneことになります。要求引数が指定されていないため、要求引数は空です。 /iLike/123?num=456を開くと、123 456という結果になります。

1

num = request.args.get('num')numを使用してください。ルート/機能への入力として指定したので、直接アクセスすることができます。

1

これを試してください:あなたがここにルートパラメーターと要求引数を混合している

@app.route('/iLike/<int:num>', methods=['GET','POST']) 
def single2(num): 
    print(num) 
1

あなたはここにNone受け取る:

num = request.args.get('num') 

あなたは、クエリ文字列の要素としてnumを渡していないので。

request.args.get('num')の場合は?

我々はこの1のようなURLを持っている希望の場合:

localhost:8080/iLike?num=2 

しかし、それはあなたのケースではありません。すでに関数に引数としてnumを渡します。したがって、あなたの場合は、次のようにしてください:

@app.route('/iLike/<num>', methods=['GET','POST']) 
def single2(num): 
    try: 
     location = session.get('location') 
     transType = session.get('transType') 
     data = session.get('data') 

     print(num) 
関連する問題