2017-02-18 11 views
0

ログイン後にメインページにリダイレクトしたい。私のテンプレートでは、私はこれを持って、Django OverrideカスタムログインリダイレクトURL

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

問題は、ユーザーがログイン後のメインページにリダイレクトされることはありませんで、settings.LOGIN_REDIRECT_URLは引き継ぐと私は設定ファイルで指定されたURLにユーザーをリダイレクトします。

を強制的に使用するのではなく、Djangoが私の?next 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)