【问题标题】:Redirect to next parameter in Django 1.5重定向到 Django 1.5 中的下一个参数
【发布时间】:2013-04-27 13:27:49
【问题描述】:

我有一个输入字段<input type="hidden" name="next" value="{{ next }}" />,但它不会将{{ next }} 替换为GET 参数的值。我找不到如何替换该值。

我的看法

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

【问题讨论】:

  • 你的view code是什么?
  • 不应该 self.request.REQUEST.get('next')self.request.GET.get('next')

标签: python django redirect next loginview


【解决方案1】:

在类LoginView 上覆盖方法get_context_data

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

这假定GET 参数将在参数next 中具有用户应重定向的下一个URL。所以,请求的格式应该是localhost.com/login?next=/accounts/

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 2023-04-05
    • 2015-09-25
    • 2021-06-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    相关资源
    最近更新 更多