使用django中的ajax检查实时值可用性

时间:2015-07-29 11:44:53

标签: jquery ajax django

我正在尝试使用django表单中的ajax对数据库中的值的可用性进行实时检查。我找到了许多ajax和PHP的例子来检查用户名或电子邮件的可用性,但是找不到纯粹的python示例。有没有办法可以将元素的值传递给python脚本,然后查询数据库的可用性?

3 个答案:

答案 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