これは Python/Flask の質問です。
更新: 今朝、気分が悪くて目が覚めました。Flask は、ソース コードでこれらのグロテスクな href を作成していません。実行中にプリペンドが行われています。リンクの上にマウスを置いたときに表示されるリンク アドレスを見てきました。今日、生成されたソースでそれらをチェックしましたが、生成したとおりに問題ありません。
では、私の質問は次のとおりです。あるプロジェクトから次のプロジェクトに移動するときに、ランタイム プロセスが何らかのフローティング ベース URL を構築するのはなぜですか? これをオフにするにはどうすればよいですか? または、Flask に元のルート アプリケーション ディレクトリにリセットするように指示しますか?
= = = = =
関連する Web ページへの参照を含む Web ページを生成しようとしています。ページはツリー状の構造で編成されており、すべてのプロジェクトが 1 つのレベルにあり、各プロジェクトの下に複数のページがあります。表示されている各ページについて、すべてのプロジェクトと各プロジェクトの下のすべてのページを一覧表示するサイドバーを、表示されている各ページへのリンクとともに表示したいと考えています。
私の views.py プログラムは次のように設定されています。
@app.route('/')
@app.route('/abc')
@app.route('/abc/<projectName>')
@app.route('/abc/<projectName>/<pageName>')
@app.route('/<projectName>/<pageName>')
def abc_pages(projectName=None, pageName=None):
.
. [includes creating anchor tags]
.
私の問題は、URL に projectName と pageName の両方が含まれている場合、作成したアンカー タグの先頭に projectName が追加されることです。例として、「example.com:5000/abc/projectA」のように projectName のみの URL を使用して、デフォルトのページにアクセスできます。そのページでは、生成されたアンカー タグは、"example.com:5000/abc/projectB/page_b2" のような href で期待どおりです。
しかし、"example.com:5000/abc/projectA/page_a1" のように projectName と pageName の両方を含む URL を使用してページにアクセスすると、アンカー (前と同じように生成されます) は次のようになります: "example.com:5000 /abc/projectA/projectB/page_b2".
長く苛立たしい検索を行った後、解決策が見つかりませんでした。私はそれを試してみて、問題のある projectName を次のように削除しました。
@app.route('/')
@app.route('/abc')
@app.route('/abc/<projectName>')
@app.route('/abc/<projectName>/<pageName>')
@app.route('/<projectName>/<pageName>')
@app.route('/abc/<noName>/<projectName>/<pageName>') <<--- new code here
def abc_pages(noName=None, projectName=None, pageName=None):
.
. [includes creating anchor tags]
.
喜びはありません。それは、問題の 1 回の繰り返しだけで済みます。不正な形式の「example.com:5000/abc/projectA/projectB/page_b2」をクリックできますが、生成された page_b2 のアンカー タグは「example.com:5000/abc/projectA/projectB/ProjectC/page_c3」のようになります。
したがって、私の質問は、生成されたアンカー タグがこの履歴を取得する理由です (ただし、projectName の履歴のみ)。毎回同じアンカー タグのコードを生成していますが、href は拡張し続けます。