我想在成功登录后重定向用户。目前,我这样做。 PS:我不想使用Django Forms。我这样做的方式是重定向用户的标准方式吗?
HTML
<form role="form">
<div class="form-group">
<label for="sender-email" class="control-label">Username:</label>
<div class="input-icon"> <i class="icon-user fa"></i>
<input id="sender-email" type="text" placeholder="Username" class="form-control email">
</div>
</div>
<div class="form-group">
<label for="user-pass" class="control-label">Password:</label>
<div class="input-icon"> <i class="icon-lock fa"></i>
<input type="password" class="form-control" placeholder="Password" id="user-pass">
</div>
</div>
<div class="form-group">
<a href="#" class="btn btn-primary btn-block" id="authenticate_user">Submit</a>
</div>
</form>
JS
$(function(){
$('#authenticate_user').click(function(){
username = $('#sender-email').val();
password = $('#user-pass').val();
$.ajax({
type : "POST",
url: '/login',
data: {'username':username, 'password':password},
success : function(result){
window.location = '/';
},
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
});
})
})
views.py
@csrf_exempt
def signin(request):
if request.method == '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)
return redirect('%s' % (settings.LOGIN_REDIRECT_URL))
else:
return {'error': 'Your account has been disabled.'}
else:
return {'error': 'Invalid Login.'}
if request.user.is_authenticated():
return redirect('%s' % (settings.LOGIN_REDIRECT_URL))
ctx = {}
return render(request, 'login/login.html', ctx)
答案 0 :(得分:1)
大多数情况下可以,但我会说你可能需要合并一个重定向查询参数,因为经常会遇到客户端试图访问服务器上的资源的情况,并且由于她未经身份验证,她被重定向到登录将原始资源URI作为查询参数的url。登录成功后,Web服务器会将客户端重定向到她尝试访问的原始资源。