In my Django application, I would like to be able to send and receive the same jQuery query.
My HTML:
<form method="post" id='validation_form'> {% csrf_token %} <input id='username' type="text" name="username" value=""/> <button type="submit">Submit</button> </form>
JS:
var username = $('#username').val() $.post('/auth_validate', {'username': username}, function(data) {
Views:
def auth_validate(request): error = False if request.method == 'POST': username = request.POST.get('username') if User.objects.filter(username__exact=username).exists(): error = 'Sorry this username is already taken'
I would like to get an βerrorβ in the same jQuery query that I used to publish. Is it possible to do this?
Thank you for your help.
EDIT: Here is the solution I found.
JS:
function validateForm() { var username = $('#username').val() var result='' $.get('/auth_validate_username/', {'result':result}, function(data){ $.post('/auth_validate_username/', {'username': username}, function(data) { $('#error_message').html(data); }); }); return false; };
HTML:
<form method="post" onsubmit="return validateForm();"> {% csrf_token %} <input id='username' type="text" name="username" value=""/> <div id='error_message'></div> <button type="submit">Submit</button> </form>
Views:
def auth_validate_username(request): result = '' if request.method == 'POST': username = request.POST.get('username') if User.objects.filter(username=username): result='Sorry but this name is already taken' return HttpResponse(result)
Thus, I first send the username value. If the username already exists, the result changes, and then I get it.
The trick was to send a request for a request within a request for receipt.