首页 > 解决方案 > 使用 Flask 和 JQuery 自动完成

问题描述

所以我正在尝试使用 Flask 和 JQuery 自动完成,它一直给我一个错误。(试图将此功能集成到我的常见问题聊天机器人中,以便用户查看搜索建议)

以下是代码:

应用程序.py

from flask import Flask, Response, render_template, request
import json

app = Flask(__name__)

import wtforms as wt

from flask_wtf import FlaskForm
from flask_wtf import Form

from wtforms import StringField, validators
from wtforms import BooleanField, TextAreaField
from wtforms.validators import ValidationError, DataRequired

texts=["hi","hello","hey","hi there"]

class SearchForm(Form):
    autocomp= StringField('autocomp',id='autocomplete')

@app.route('/autocomplete',methods=['GET'])
def autocomplete():
    search = request.args.get('autocomplete')

    app.logger.debug(search)
    return Response(json.dumps(texts), mimetype='application/json')

@app.route('/',methods=['GET','POST'])
def index():
    form = SearchForm(request.form)
    return render_template("search.html",form=form)

if __name__ == '__main__':
    app.run()

搜索.html

<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js"></script>
</head>

{{ form.autocomp.label }}: {{ form.autocomp }}

<script>
    $(function() {
        $.ajax({
            url: '{{ url_for("autocomplete") }}'
            }).done(function (data) {
                $('#autocomplete').autocomplete({
                    source: data,
                    minLength: 2
                });
            });
        });
</script>

</html>  

这是我得到的错误:

  File "C:\Users\User\anaconda3\envs\autocomplete\lib\site-packages\wtforms\form.py", line 268, in __init__
    super(Form, self).__init__(self._unbound_fields, meta=meta_obj, prefix=prefix)
TypeError: super(type, obj): obj must be an instance or subtype of type

我该如何解决这个错误?

标签: pythonjqueryflaskautocomplete

解决方案


推荐阅读