Djangoで前のパスを取得する方法


  1. リクエストのMETA情報を使用する方法:

Djangoのリクエストオブジェクトには、現在のリクエストに関する情報が含まれています。この中には、前のパスを示すHTTP_REFERERというキーがあります。以下はその例です。

def my_view(request):
    previous_path = request.META.get('HTTP_REFERER')
    # previous_pathを使用して必要な処理を行う

ただし、注意点として、HTTP_REFERERは常に提供されるわけではないため、その値が存在しない場合も考慮する必要があります。

  1. クエリパラメータを使用する方法:

もう一つの方法は、リンクやフォームのアクションURLにクエリパラメータとして前のパスを含める方法です。例えば、以下のようなリンクを作成します。

<a href="{% url 'my_view' %}?previous={{ request.path }}">リンク</a>

そして、ビューでクエリパラメータを取得して使用します。

def my_view(request):
    previous_path = request.GET.get('previous')
    # previous_pathを使用して必要な処理を行う
  1. セッションを使用する方法:

さらに、Djangoのセッションを使用して前のパスを保持する方法もあります。例えば、以下のようにセッションに前のパスを保存します。

def my_view(request):
    previous_path = request.session.get('previous_path')
    request.session['previous_path'] = request.path
    # previous_pathを使用して必要な処理を行う

この方法では、セッションに前のパスが保存され、後続のリクエストで利用できるようになります。

以上がDjangoで前のパスを取得するいくつかの方法です。必要に応じて適切な方法を選択してください。