2

などの URL を含む php で記述された Web サイトがありましたexample.com/index.php?q=xyz。今、私はそれをフラスコ( python )で書き直しましたexample.com/search?q=xyz。それを行う最良の方法は何ですか?

私が考える 1 つのアプローチは、index.php とコードを php に記述してリダイレクトすることです。しかし、アプリケーション (フラスコ) のみを使用して同じことを達成することは可能ですか?

更新:送信パラメーターはまったく同じではありません。それにもいくつかのカスタマイズがあります。

4

3 に答える 3

1

はい、Flask で実行できます。

最初にコードを示し、次に説明します。

コード

    @app.route('/index.php')
    def index():
        url = url_for('search',q=request.args['q'])
        return redirect(url)

    @app.route('/search')
    def search():
        # Access q as request.args['q'] same as we have done above

説明

Flask が有効な URL に追加されたパラメータを受け取るたびに、この場合は q が「index.php」URL に追加され、? 結合要素として。これらのパラメーターを、Flask のグローバル要求変数の属性として使用できる args という名前の MultiDict (詳細はこちら) に保存します。

次のようにアクセスします

    request.args['parameter_name']

パラメータ値は文字列に変換されており、整数値は int() を介して渡す必要があることに注意してください。

このコードは単に index.php url とそのパラメーターをキャッチし、パラメーターをそのまま渡して新しい検索 URL にリダイレクトします。パラメータを処理して検索 URL に渡すこともできます。このようにして、両方の URL が最終的に目的の作業を行います。

それが役立つことを願っています! :)

于 2012-06-17T19:21:25.417 に答える
1

apache を使用している場合、書き換えルールを httpd.conf ファイルのディレクトリ セクションまたは .htaccess ファイルに配置するのがおそらく最も簡単な方法です。

于 2012-06-15T14:11:37.900 に答える
0

ルールはファイルを指していないため、Flask はルールの名前を気にしません。あなたは書くことができます:

@app.route('/index.php')
def index_view():
    pass
于 2012-06-15T18:29:25.673 に答える