LoginSignup

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

flaskのページ遷移でaタグのidでの遷移がうまくいきません。

解決したいこと

flaskでページ遷移する際にid属性を指定した箇所にせんいしたい。

flaskで簡単なHP作成練習を行っているのですが、
ページ遷移がうまくいかず詰まってしまっています。
解決方法を教えて下さい。

発生している問題・エラー

.リンクバー
http://127.0.0.1:5000/%23News
app.py
@app.route('/#News')
def news_page():
    return render_template('index.html#News')
base.html
<li>
    <a href="{{ url_for('news_page') }}">News</a>
</li>

上記コードを記述して動作確認を行ったところ

.リンクバー
http://127.0.0.1:5000/%23News

遷移後のページリンクが/%23Newsになってしまうという現象が起きてしまいました。
リンクバーの"%23"を"#"に書き換えると想定通りの動作をしてくれるのですが
どうしてもサイトリンクを押下すると%23に変換されてしまいます。
わかる方がいらっしゃいましたら教えていただけると幸いです

最後まで読んでいただきありがとうございます

0

2Answer

遷移後のページリンクが/%23Newsになってしまうという現象が起きてしまいました。

%23 は # がエスケープされた結果です。フレームワークによってはセキュリティ対策(XSS 防止)のため、文字列を html ソースにレンダリングする際自動的にエスケープするものが多いです。たぶんエスケープを回避する手段があると思います。

flask とか触ったこともないので具体的な方法は自分は分かりません。「flask エスケープ回避」などをキーワードにググってみてください。

2

Comments

  1. @Kobayashi0620

    Questioner

    raw文字列や{% autoescape false %}などを試したのですがエスケープ回避できませんでした
    何かご存じないでしょうか?

  2. @Kobayashi0620

    Questioner

    下記コードで普通に通りました
    {{ url_for('index_page') }}#News
    お騒がせしました

そもそも route() の立場からすると # 以降はサーバーに送られない値なので考慮できないのでは……?

0

Your answer might help someone💌