사용자가 로그인 양식을 사용할 때 사용자가 기본적으로 사용자 페이지 (예 : mywebsite.com/userpage)로 이동하도록 허용하려고합니다.django - 다중 로그인 리디렉션
또한 웹 사이트의 다른 암호로 보호 된 페이지로 이동하면 먼저 로그인 페이지로 리디렉션되고 인증되면 액세스하려고했던 원래 페이지로 돌아갑니다.
views.py
def user_login(request):
if request.method == 'POST':
form = AuthenticationForm(request.POST)
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a successpage
if request.POST['next']:
return HttpResponseRedirect(request.POST['next'])
else:
return HttpResponseRedirect("/" + username + "/")
else:
errors = 'This account has been disabeled.'
else:
# Return an 'invalid login' error message.
errors = 'There is a problem with the user name and/or the password. Please try again.'
else:
form = AuthenticationForm()
return render_to_response("registration/my_login.html", locals(), context_instance=RequestContext(request))
urls.py
urlpatterns = patterns('',
url(r'^login/$', user_login,),
my_login.html
:이
내가 로그인 기능을 위해 지금까지 무엇을 가지고<form action="." method="post" >{% csrf_token %}
{{errors}}
{{ form.as_p }}
<p class="submit"><button type="submit" name="login_user_button" value="Login">Log in</button></p>
<input type="hidden" name="next" value="{{ next }}">
</form>
내 문제는 리디렉션에 대한 내 user_login
함수에서 사용할 수 있도록 "다음"변수의 값을 가져 오는 방법을 모르겠다는 것입니다.
나는 알 수 있듯이 request.POST['next']
으로 얻으려고했지만 빈 문자열이 나오므로 어떤 이유로 값이 "다음"변수에 서명되지 않습니다.
아이디어가 있으십니까?
안녕하세요 @avatar, views.py의 '다음'매개 변수가 POST 또는 GET에서 제공되는지 확인하세요. 아마도 POST [ 'next']를 GET [ 'next']로 대체해야합니다. – danihp
나는 생성 된 HTML 페이지에서 소스 코드를 살펴 보았고 다음 입력 파일은 다음과 같습니다 : . 그래서 어떤 이유로 로그인 페이지를 가리키는 웹 링크가 다음 값을 갖더라도 {{next}}는 다음 값을 포착하지 않습니다 (예 : http://mywebsite.com/accounts/login/?next=/messages/). – avatar