Django テンプレートに現在ページのURLやパスを表示する方法

テンプレートに現在表示しているページのURLやパスを表示する方法を紹介します。

URLを表示する方法

以下のコードをテンプレートに書き込むとURLが表示されます。

{{ request.build_absolute_uri }}

現在表示しているページが

http://127.0.0.1:8000/sample/?key1=value1&key2=value2

の場合、

http://127.0.0.1:8000/sample/?key1=value1&key2=value2

と表示されます。

request変数はデフォルトでcontext_processorsに登録されているため、どのテンプレートでも使用できます。

パスを表示する方法

パスを表示する方法には、”URLクエリパラメーター付き”と”URLクエリパラメーター無し”の2パターンあります。

URLクエリパラメーターとは以下の様にURLの末尾に?マークを使って追記している部分(太字部分)です。https://example.com/sample/?key1=value1&key2=value2

URLクエリパラメーター付きのパスを表示したい場合

{{ request.get_full_path }}

表示しているページが

https://example.com/sample/?key1=value1&key2=value2

の場合、

/sample/?key1=value1&key2=value2

と表示されます。

URLクエリパラメーター無しのパスを表示したい場合

{{ request.path }}

表示しているページが

https://example.com/sample/?key1=value1&key2=value2 の場合、

/sample/

と表示されます。

補足

HttpRequestオブジェクトには様々な機能や情報が用意されています。

これらを使えばサーバーのホスト名や、サーバーのポート、スキーム (通常はhttpかhttps)などを表示することもできます。

{{ request.META.SERVER_PORT }}
{{ request.META.SERVER_NAME }}
{{ request.scheme }}
スポンサーリンク
スポンサーリンク