Djangoで現在アクセスされているページのURLを取得する

Djangoで現在アクセスされているページのURLを取得する

Djangoで現在アクセスされているページのURLを取得する方法です。

view.py

ドメインのみ

request.get_host()
# e.g. sampel.com

ドメイン+プロトコル

"{0}://{1}".format(request.scheme, request.get_host())
# e.g. https://sample.com

パラメータなしパス

request.path
# e.g. /foo/

パラメータありパス

request.get_full_path 
# e.g. /foo/?v=1.0

パラメータなしURL

"{0}://{1}{2}".format(request.scheme, request.get_host(), request.path)
# e.g. https://sample.com/foo/

パラメータありURL

request.build_absolute_uri()
# e.g. https://sample.com/foo/?v=1.0

Template

テンプレート中でアクセスしているURLを表示するためにsetting.pyのTEMPLATESに次の設定を追加します。

TEMPLATES = [
    ...
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
            ],
        },
    ...
]

ドメイン

{{ request.get_host }}
{# e.g. sampel.com #}

ドメイン+プロトコル

{{ request.scheme }}://{{ request.get_host }}
{# e.g. https://sample.com #}

パラメータなしパス

{{ request.path }}
{# e.g. /foo/ #}

パラメータありパス

{{ request.get_full_path }}
{# e.g. /foo/?v=1.0 #}

パラメータありURL

{{ request.build_absolute_uri }}
{# e.g. https://sample.com/foo/?v=1.0 #}