在我的 Django 应用程序中,我希望能够发布和获取相同的 jQuery 请求。
我的 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) {
// Get Request to get something.
}
意见:
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'
我想在我以前发布的同一个 jQuery 请求中得到“错误”。有可能这样做吗?
谢谢您的帮助。
编辑:这是我找到的解决方案。
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>
意见:
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)
这样我首先发布值用户名。如果用户名已经存在结果更改,然后我得到它。
诀窍是将发布请求放入获取请求中。