2017-05-18 8 views
0

で手渡しハッシュタグ私がDBから%query%を含むいくつかのレコードを取得し、このようになりますルート、ボトル - 要求

@app.route('/search/<query>') 
def search(query): 
    # query DB, return a template, etc. 

を持っています。ただし、そのクエリに1つまたは複数の#が含まれていると、そのクエリは中断されます。

これはURLエンコーディングの問題です(#%23またはその行に沿ったものに変換されません)。

どうすればこの問題を解決できますか?別の回答の推奨に従ってresponse.charset = 'US-ASCIIsearch(query)に設定しようとしましたが、運はありません。

+0

「ブレーク」は?また、URLフラグメント(エスケープされていない '#'の後ろのすべて)があなたのウェブサーバに送られていないことにも言及する価値があります。 –

答えて

1

これは、フロントエンドコードでURLを正しくエンコードできない場合に発生します。

私はちょうどクイックテストを実行し、ボトルは正しく解決された/search/number%20%236から/search/number #6です。

フロントエンドがあなたのURLをエンコードするために使用しているものは、ハッシュ記号をフラグメント識別子として解釈し、正しくエンコードできない可能性があります。 URLを渡す前に別のライブラリを使用してエンコードするか、手動でエンコードすることができます。