0

入力フィールドがありますが、GET パラメータの値に<input type="hidden" name="next" value="{{ next }}" />置き換えられません。{{ next }}値を置き換える方法が見つかりません。

私の見解

class LoginView(FormView):
    form_class = AuthenticationForm
    redirect_field_name = REDIRECT_FIELD_NAME
    template_name = 'user/login.html'

    @method_decorator(csrf_protect)
    @method_decorator(never_cache)
    def dispatch(self, *args, **kwargs):
        return super(LoginView, self).dispatch(*args, **kwargs)

    def form_valid(self, form):
        login(self.request, form.get_user())
            return super(LoginView, self).form_valid(form)

    def get_success_url(self):
        if self.success_url:
            redirect_to = self.success_url
        else:
            redirect_to = self.request.REQUEST.get(self.redirect_field_name, '')

        if not redirect_to:
            redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)

        return redirect_to
4

1 に答える 1

1

get_context_dataclass のメソッドをオーバーライドしLoginViewます。

def get_context_data(self, **kwargs):
    context = super(LoginView, self).get_context_data(**kwargs)
    context['next'] = self.request.REQUEST.get('next')
    return context

GETこれは、ユーザーが param にリダイレクトされる次の URL がパラメーターにあることを前提としていますnext。したがって、リクエストは次の形式にする必要がありますlocalhost.com/login?next=/accounts/

于 2013-04-27T13:49:09.580 に答える