【发布时间】:2017-11-19 00:33:45
【问题描述】:
我正在尝试发送发布请求并根据该信息对用户进行身份验证。然而,即使我检查了来自$('#sign_in').serialize() 的结果并且它返回类似username=test&password=test 的内容,当我在views.py 中运行print(request.POST) 时它仍然返回<QueryDict: {}>。我做错了什么,为什么不传递参数?
ajax 函数
function logIn() {
var username = $('#id_username').val();
var password = $('#id_password').val();
console.log($('#sign_in').serialize())
$('#sign_in_btn').text('Logger ind...');
$.ajax({
url: "/account/login/",
type: "POST",
dataType: 'json',
contentType: 'application/json',
data: $('#sign_in').serialize(),
success: function (data) {
console.log(data)
}, error: function (error) {
}
});
}
views.py
def login(request):
print(request.POST)
if request.method == "POST":
form = SignInForm(data=request.POST)
response_data = {}
if form.is_valid():
username = request.POST.get("username", False)
password = request.POST.get("password", False)
user = authenticate(username=username, password=password)
auth_login(request, user)
if user:
response_data['success'] = True
response_data['message'] = 'Brugeren er blevet oprettet!'
else: #invalid case
response_data['success'] = False
response_data['message'] = 'Forkert brugernavn/kodeord. Prøv venligst en anden kombination eller tryk på glemt kodeord!'
print(form.errors)
return HttpResponse(json.dumps(response_data), content_type='application/json')
else:
form = SignInForm()
return render(request, 'login.html', {'form': form})
【问题讨论】: