2017-04-19 11 views
2

私のフラスコアプリケーションでのルーティングの問題に直面しています。ルートはそうFlaskアプリケーションでのルーティング

@app.route("/<lang>/books/<name>.html") 
def func1(lang="en", name="") 
    pass 

@app.route("/<lang>/books/index.html") 
def func2(lang="en"): 
    pass 

以下のように定義される

URLが/en/books/index.htmlように要求された場合、 - それは第2機能にルーティングする必要がありますが、フラスコルートこれは、最初に機能します。

なぜそうですか?上記のfunc2をfunc1に置き、同じ問題に直面してコードの順序を変更しました。解決方法を知ることができますか?

答えて

2

これはいかがですか?

@app.route("/<lang>/books/<name>.html") 
def func1(lang="en", name=""): 

    if name == "index": 
     return index() 

    return something_else() 
+0

はい、私はすでにそれを実装したと考えましたが、これは正しいものではありません。ルートのエンドポイントが一般的なルートよりも具体的なので、別の機能にルーティングすることはできません。 –

+1

@RinsenS、なぜ正しいものはありませんか? –

+0

@IronFistです。なぜなら、私は2番目の関数内で追加のチェックを行い、最初の関数を呼びたくないからです。 @ app.route( "/ category/index.html")@ app.route( "/ /books/.html") - この場合、私は名前だけをチェックするべきではありません== "index"、func1を実行してインデックス関数を呼び出さないようにする –

関連する問題