遷移後のページリンクが/%23Newsになってしまうという現象が起きてしまいました。
%23 は # がエスケープされた結果です。フレームワークによってはセキュリティ対策(XSS 防止)のため、文字列を html ソースにレンダリングする際自動的にエスケープするものが多いです。たぶんエスケープを回避する手段があると思います。
flask とか触ったこともないので具体的な方法は自分は分かりません。「flask エスケープ回避」などをキーワードにググってみてください。
Like!
flaskでページ遷移する際にid属性を指定した箇所にせんいしたい。
flaskで簡単なHP作成練習を行っているのですが、
ページ遷移がうまくいかず詰まってしまっています。
解決方法を教えて下さい。
http://127.0.0.1:5000/%23News
@app.route('/#News')
def news_page():
return render_template('index.html#News')
<li>
<a href="{{ url_for('news_page') }}">News</a>
</li>
上記コードを記述して動作確認を行ったところ
http://127.0.0.1:5000/%23News
遷移後のページリンクが/%23Newsになってしまうという現象が起きてしまいました。
リンクバーの"%23"を"#"に書き換えると想定通りの動作をしてくれるのですが
どうしてもサイトリンクを押下すると%23に変換されてしまいます。
わかる方がいらっしゃいましたら教えていただけると幸いです
最後まで読んでいただきありがとうございます
遷移後のページリンクが/%23Newsになってしまうという現象が起きてしまいました。
%23 は # がエスケープされた結果です。フレームワークによってはセキュリティ対策(XSS 防止)のため、文字列を html ソースにレンダリングする際自動的にエスケープするものが多いです。たぶんエスケープを回避する手段があると思います。
flask とか触ったこともないので具体的な方法は自分は分かりません。「flask エスケープ回避」などをキーワードにググってみてください。
@Kobayashi0620
Questionerraw文字列や{% autoescape false %}などを試したのですがエスケープ回避できませんでした
何かご存じないでしょうか?
@Kobayashi0620
Questioner下記コードで普通に通りました
{{ url_for('index_page') }}#News
お騒がせしました
そもそも route()
の立場からすると #
以降はサーバーに送られない値なので考慮できないのでは……?