Chrome と IE の両方で正常に動作する Safari の Django ログイン フォームに問題があります。
Chrome/IE で使用すると、フォームはユーザー名/パスワードを正しく返し (必要な場合)、正しいユーザー名/パスワードを入力すると、ユーザーはログインして {{next}} にリダイレクトされます。
Safari では、ユーザー名/パスワード エラーも正しく機能しますが、有効なユーザー名とパスワードを入力すると、ユーザーは {{next}} ではなくログイン ページにリダイレクトされます。
これが私のログインビューです:
def login_user(request):
next = request.GET['next']
state = ""
username = password = ""
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username = username, password = password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(next)
else:
state = "You're account is not active"
else:
state = "Your're username and/or password are incorrect."
return render_to_response('access/login.html', { 'state' : state }, context_instance=RequestContext(request))
およびログイン テンプレートのフォーム:
<form action="" method="post">{% csrf_token %}
<label for="username">username:</label>
<input type="text" id="username" name="username"/>
<label for="password">password:</label>
<input type="password" name="password"/>
<input type="submit" value="Log In" />
<p><strong>{{ state }}</strong></p>
</form>