Djangoでユーザーログイン後に元いたページにリダイレクトする方法
2017/01/22 12:43
  • Djangoの認証周りでちょっとハマったのでメモ。

    会員制サイトなどでよくある、ログイン後にトップページにリダイレクトさせたり、あるいはもともと居たページにリダイレクトする方法です。

    {{ next }} で指定?

    {{ next }} だとリファラーをみるので、認証がかかっているページ(例えば http://hoge.com/product/1/) などからログインした場合、リダイレクトパスはブランクになるので、
    結局トップページなど、 LOGIN_REDIRECT_URL で指定したパスにリダイレクトされてしまいます。
    これは、 {{ request.META.HTTP_REFERER }} を指定した際と同じ挙動になります。

    {{ reqeust.path }}next に指定すると、現在のパスがリダイレクト先として登録されるので、意図した挙動となります。

    <form action="{% url 'app:LoginView' %}" method="post" role="form">
        {% csrf_token %}
        <div class="form-group">
            <input class="form-control reset-border-radius" name="username" type="text" value="" maxlength="256" placeholder="Username" autofocus>
        </div>
        <div class="form-group">
            <input class="form-control reset-border-radius" name="password" type="password" value="" maxlength="256" placeholder="Pasword">
        </div>
        <input name="next" type="hidden" value="{{ request.path }}"> <!-- これです -->
    
        <button type="submit" class="btn btn-primary reset-border-radius">Sign In</button>
    </form>
    

    人気ブログランキングへ ブログランキング・にほんブログ村へ
    ↑応援よろしくお願いします!m(_ _)m

  • <2017/01/22 12:43>
  • Python
  • Djangoログインリダイレクト元のページ認証
  • 新しい記事へ
    Djangoデフォルトのテンプレートエンジンを使ったほうが幸せになれるかもしれない話

    古い記事へ
    [Django] restframework + oauth-toolkitでハマった話

profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。