Я звоню AJAX, чтобы отправить данные на сервер. В бэкэнде I print
возвращаются данные, отправленные с внешнего интерфейса, однако None
. Это неожиданно, поскольку вкладка сети (в chrome) подтверждает, что запрос AJAX был успешно выполнен, и к нему добавлены правильные данные. Это заставляет меня думать, что что-то не так с бэкэндом (Django).
HTML (регистрация. html):
<form id="signup_form">
{% for field in form %}
{{ field }}
<br>
{% endfor %}
<button class="signup-btn btn btn-primary">Sign up</button>
</form>
<div id="testbox"></div>
Javascript / AJAX КОД :
var delayTimer;
$('#signup_form').keyup(function() {
clearTimeout(delayTimer);
delayTimer = setTimeout(function () {
var usernameVal = $("#username_signup").val();
// This returns expected result(value in input box)
console.log(usernameVal);
$.ajax({
url: '/users/ajax/signup',
data: {
'usernameVal': usernameVal,
},
dataType: 'json',
success: function(data) {
$('#testbox').text(data['usernameVal']);
}
});
}, 1000);
});
views.py :
// Renders form and signup page
def signup(request):
context ={}
form = SignupForm()
context['form'] = form
return render(request, 'signup.html', context)
// Handles AJAX (This is the view AJAX calls (url = /users/ajax/signup))
def ajax_signup(request):
form = SignupForm(request.GET)
if form.is_valid():
// This line below is printed successfully
print("WORKS")
// This line below returns None unexpectedly
print(form.cleaned_data.get("usernameVal"))
return JsonResponse({'usernameVal': form.cleaned_data.get("usernameVal")})
else:
print(form.errors)
return JsonResponse({'hello': 'not working'})
Форма регистрации :
class SignupForm(forms.Form):
username = forms.CharField(min_length=4, max_length=150, required=False, widget=forms.TextInput(attrs={'placeholder': 'Username (min 4 characters)', 'id': 'username_signup'}))
email = forms.EmailField(min_length=3, required=False, widget=forms.EmailInput(attrs={'placeholder': 'Email', 'id': 'email_signup'}))
password = forms.CharField(min_length=8, required=False, widget=forms.PasswordInput(attrs={'placeholder': 'Password (min 8 characters)', 'id': 'password_signup'}))
confirm_password = forms.CharField(required=False, widget=forms.PasswordInput(attrs={'placeholder': 'Confirm Password', 'id': 'confirmpass_signup'}))