我正在尝试使用django表单中的ajax对数据库中的值的可用性进行实时检查。我找到了许多ajax和PHP的例子来检查用户名或电子邮件的可用性,但是找不到纯粹的python示例。有没有办法可以将元素的值传递给python脚本,然后查询数据库的可用性?
答案 0 :(得分:1)
听起来问题是“什么是ajax?”。这意味着它将使用javascript异步执行POST或GET,而不是重新加载页面。您需要做的就是在python中创建一个页面,它将返回您要求的值并查询该页面。以下是使用Flask的示例:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('username-availability/')
def username-availability():
return jsonify(available=True)
if __name__ == '__main__':
app.run()
将其另存为service.py或其他内容并运行它。然后你可以,例如jQuery要求这个服务返回值(我们知道它总是为True):
$.get( "localhost:5000/username-availability/", function( data ) {
alert( data );
});
答案 1 :(得分:1)
使用Django Rest Framework创建一个API端点,然后使用jQuery命中它,例如$ .get(url)。手工编写自己的api端点是疯狂之路。
答案 2 :(得分:0)
感谢大家的建议。我决定尝试用jquery validate插件尝试使用远程选项传入csrf令牌以及ajax请求并且它有效!
我希望有人觉得这很有用。
注意:如果没有传递csrf令牌,我会收到一个禁止的错误!
var token = $('input[name="csrfmiddlewaretoken"]').prop('value');
$('#inputform').validate({
rules:{
lots_name :{
required:true,
remote:{
url: 'check_lots', //django view
type: 'post',
data: {'csrfmiddlewaretoken':token},
}, // remote ends here
}, // lots_name ends here
}, // rules end here
messages:{
remote: jQuery.validator.format('{0} exists, pick another!') //custom message
},// messages end here
}) // validate ends here