2013-04-27 43 views
0

我有一個輸入字段<input type="hidden" name="next" value="{{ next }}" />,但它不會用GET參數的值替換{{ next }}。我無法找到如何替換值。重定向到Django 1.5中的下一個參數

LoginView

我的觀點

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 
+0

你的視圖代碼是什麼? – Rohan 2013-04-27 13:31:37

+0

不應該'self.request.REQUEST.get('next')'是'self.request.GET.get('next')' – 2013-04-27 14:28:17

回答

1

覆蓋方法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被重定向。所以,請求的形式應該是localhost.com/login?next=/accounts/