2017-02-18 65 views
0

我想在登錄後將用戶重定向到主頁面。在我的模板,我有這個,Django覆蓋自定義登錄重定向Url

<a href="{% url 'auth_login' %}?next={% url 'main_page' %}">Login and Work</a> 

的問題是,用戶不會被重定向到登錄後的首頁,settings.LOGIN_REDIRECT_URL將接管和用戶重定向到我在設置文件中指定的網址。

我該如何讓Django利用我在模板中設置的?next網址,而不是強制使用settings.LOGIN_REDIRECT_URL

回答

1

下面是如何在登錄視圖中執行此操作的示例。請注意REDIRECT_FIELD_NAME:

def login(request, login_form=AuthenticationForm, template_name='accounts/login.html', 
      extra_context=None): 

    form = login_form() 

    if request.method == 'POST': 
    form = login_form(request.POST, request.FILES) 

    if form.is_valid(): 
     identification, password, remember_me = (form.cleaned_data['identification'], 
               form.cleaned_data['password'], 
               form.cleaned_data['remember_me']) 
     user = authenticate(identification=identification, password=password) 

     if user.is_active: 
     signin(request, user) 

     redirect_to = login_redirect(request.GET.get(REDIRECT_FIELD_NAME), user) 
     return HttpResponseRedirect(redirect_to) 
     else: 
     return redirect(reverse('profile_disabled', kwargs={'username': user.username})) 

    if not extra_context: extra_context = dict() 
    extra_context.update({ 
    'form': form, 
    'next': request.GET.get(REDIRECT_FIELD_NAME), 
    }) 

    return ExtraContextTemplateView.as_view(template_name=template_name, 
              extra_context=extra_context)(request)