我正在使用jQuery函數發佈一個帶有Ajax的登錄表單。在ajax成功:我想要處理不同的響應,如果它是一個成功的登錄或不。Django使用Ajax登錄?
所以在Django我不知道如果我可以建立在現有的登錄視圖中添加一些成功/錯誤變量與返回的頁面一起發回的jQuery功能。我的意思是保持視圖,因爲它默認工作,但也添加一個額外的「狀態」變量。
這方面的一個小例子將是巨大的!
我正在使用jQuery函數發佈一個帶有Ajax的登錄表單。在ajax成功:我想要處理不同的響應,如果它是一個成功的登錄或不。Django使用Ajax登錄?
所以在Django我不知道如果我可以建立在現有的登錄視圖中添加一些成功/錯誤變量與返回的頁面一起發回的jQuery功能。我的意思是保持視圖,因爲它默認工作,但也添加一個額外的「狀態」變量。
這方面的一個小例子將是巨大的!
您views.py
def logmein(request):
username= request.GET.get('username')
password = request.GET.get('pwd')
stayloggedin = request.GET.get('stayloggedin')
if stayloggedin == "true":
pass
else:
request.session.set_expiry(0)
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponse('fine')
else:
return HttpResponse('inactive')
else:
return HttpResponse('bad')
你的Ajax
function logmein() {
var username = $.trim($('#username').val());
var pwd = $.trim($('#pwdlogin').val());
var stayloggedin = document.getElementById('stayloggedin').checked;
$.ajax({
url : "/logmein/",
type : "get",
data : {
username: username,
pwd : pwd,
stayloggedin : stayloggedin,
next : next
}
}).done(function(data) {
if (data == "fine") {
window.location = window.location;
}
});
}
您需要設置一個jQuery的Ajax調用張貼到在Django您登錄視圖。
在你需要做這樣的事情的看法...
import json
from django.http import HttpResponse
def login(request):
if request.method == 'POST':
login_form = AuthenticationForm(request, request.POST)
response_data = {}
if login_form.is_valid():
response_data['result'] = 'Success!'
response_data['message'] = 'You"re logged in'
else:
response_data['result'] = 'failed'
response_data['message'] = 'You messed up'
return HttpResponse(json.dumps(response_data), content_type="application/json")
我沒有測試過這一點,但你Ajax調用應該是這個樣子。
<script>
$.ajax({
type:"POST",
url: 'http://www.yousite.com/yourview/login/',
data: $('#login_form').serialize(),
success: function(response){
// do something with response
response['result']; // equals 'Success or failed';
response['message'] // equals 'you"re logged in or You messed up';
}
});
</script>
謝謝!這個例子是否擴展了現有的登錄視圖,還是必須創建一個指向這個新視圖的新url?我已經在使用django.contrib.auth.views.login進行身份驗證。我需要保持功能。它返回一個錯誤的表單(登錄失敗)或(成功)的一個配置文件。我只是想把結果與jQuery不同的div。 – user3199840 2014-11-14 14:49:53
謝謝!我已經使用djangos登錄視圖,如果登錄成功,將返回重定向到配置文件,否則返回表單+錯誤。所以我仍然希望默認功能在那裏添加額外的「狀態」的返回,以便jquery可以將失敗的形式放在同一個div或另一個div中的配置文件。 – user3199840 2014-11-14 15:31:17