2011-09-02 6 views
0

특정 URL로 리디렉션하도록 로그인 양식을 구성하는 방법은 무엇입니까?

사용자가 방문 http://myserver/accounts/login/?next=/sentry, 그것은 다음 /sentry로 리디렉션, 로그인 자격 증명을 요청해야 목표. login_required 데코레이터를 사용하는 경우의 동작입니다. 나는 그 장식자를 사용하지 않고있다.

현재 성공적으로 로그인 한 후, next 쿼리 PARAM이 제공 되더라도 /accounts/profile로 리디렉션됩니다

증상.

질문

  1. 어디에서 기본 리디렉션 URL /accounts/profile을 무시합니까?
  2. next이 충분하지 않은 이유는 무엇입니까?
+0

urls.py 파일과 사용중인 템플릿을 제공하면 도움을받을 수 있습니다. –

답변

2

기본 리디렉션 대상을 재정의하려면 LOGIN_REDIRECT_URL 설정을 기본값 인 /accounts/profile으로 설정하십시오.

https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-LOGIN_REDIRECT_URL

난 당신이에서 사용자를 로그인하는 방법을 아는이없는 질문의 다른 부분에 대답 할 수 없다. 당신이 당신의 자신의보기와 login() 기능을 사용하고 있습니까? 이 경우 직접 next 매개 변수를 처리해야합니다.

일반보기를 사용하는 경우 redirect_field_name 매개 변수를 전달할 수 있습니다 (기본값은 "다음"이어야 함).

https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.login

1

첫째, 당신은 settings.py에 LOGIN_REDIRECT_URL을 설정하여 기본 리디렉션 URL을 대체 할 수 있습니다.

질문의 두 번째 부분에 대한 답변 - next을 포함하는 로그인 템플릿의 양식에 숨겨진 입력이 있는지 확인해야합니다. 귀하의 템플릿은 어떻게 생겼습니까? 그것은이 같은 것을 포함 할 필요가 :

<form method='post'>{% csrf_token %} 
    {{ form.as_p }} 
    <input type="hidden" name="next" value="{{ next }}"> 
    <input type="submit" value="Log in" class="big_button"> 
</form> 

당신이 로그인 뷰에 매개 변수로 redirect_field_name을 통과 한 경우를, 당신은해야 그 입력의 이름이 아닌 next.

관련 문제