3

Django アプリでログインとユーザー登録を処理するために django-registration を使用しています。ユーザーがシステムに正常にログオンした後、要求した URL にリダイレクトされるようにしたいと思います (最初に URL にアクセスしようとしたときにログオフされたと仮定します)。

ログイン URL は次のようになります。

http://localhost:8000/accounts/login/?next=/#foo/bar/

ただし、ログイン後、ユーザーは常にhttp://localhost:8000/. 私はそれを試してみましたがhttp://localhost:8000/accounts/login/?next=/abc/def/、それはうまくいったので、ハッシュタグが問題であると思います. これはどのように修正できますか (仮にあったとしても)?

アップデート

これは単一ページのアプリなので、ハッシュタグは...

4

2 に答える 2

1

django-registration (実際には django) コードのステップ実行を開始しました。ログイン中にdjango-registrationが行っていることは何も見つからなかったので、この部分についても責任がないと思います。

Djangoは関数 ( )@login_requiredでビュー関数をラップし、実際の関数を実行する前に認証テストを実行します。まだログインしていない場合は、現在の URL を( ) として取得し、ログインを開始します。ただし、ハッシュタグの URL も返しません。URL の # が追加された部分を抽出することは、一般的に不可能のようです_wrapped_view(request, *args, **kwargs)django.contrib.auth.decoratorsnextpath = request.build_absolute_uri()request.build_absolute_uri()

于 2013-09-08T03:50:31.467 に答える
0

ネクロマンサーで申し訳ありませんが、次の方法でこの問題を解決しました。

次のログインフォームのテンプレートがあります。

<form method="post" action="{% url 'login' %}">
    {% csrf_token %}
    <input type="hidden" id="hidden_next" name="next" value="{{ next }}">
    ... the actual form here ...
</form>

そして(私はJQueryを使用しています)最後に次のスクリプト:

<script>$(function () { 
    $("#hidden_next").attr(
        "value", "{{ next }}" + 
            $(location).attr('hash'))
    });
</script>

{{ next }}ユーザーがJavascriptを無効にした場合に備えて、繰り返していることに注意してください。単一ページのアプリでは、javascript を無効にしているユーザーはページをまったく使用できないため、これは問題になりません。

于 2015-06-25T09:34:19.570 に答える