从 wtforms 获取数据

Getting Data from wtforms

我一直在尝试使用 word2vec 和 gensim 作为其 python 实现。现在我必须让我的模型可以在网站上访问 - 所以我需要 Flask。我在 forms.py 中定义了一个表单:

from wtforms Import Form, StringField, SubmitField, validators
class msForm(Form):
    ms_1 = StringField(label='Eingabe_1', default = 'king', validators=[validators.input_required()])
    ms_2 = StringField(label='Eingabe_2', default = 'man', validators=[validators.input_required()])
    ms_3 = StringField(label='Eingabe_3', default = 'queen', validators=[validators.input_required()])
    submit=SubmitField()

现在我的 views.py 看起来像:

from app import app
from .forms import msForm
from flask import render_template, flash, request
from gensim.models import word2vec

global model
model = word2vec.Word2Vec.load_word2vec_format('./app/static/GoT.model.vector', binary=True)
global form
form = msForm()

@app.route('/')
def index():
return render_template('my-form.html', form=form)

@app.route('/', methods=['POST'])
def msForm_post():
    text1 = form.ms_1.data
    text2 = form.ms_2.data
    text3 = form.ms_3.data      
    processed_text = model.most_similar(positive=[text3, text2], negative = [text1])        
    return processed_text[0][0]

当我执行 run.py 时,转到 http://localhost:5000/,更改我的输入并单击 'Submit' 按钮,我只在默认输入上得到答案。他为什么不发送我的输入?

感谢您的帮助,对不起我的英语, FFoDWindow

实例化视图中的表单,而不是作为一个全局的。您一遍又一遍地使用相同的表单实例,而该实例是在没有任何表单数据的情况下创建的。您可以在一个视图中将 GET 和 POST 分组。

@app.route('/')
def index():
    form = msForm(request.form)
    # request.form not needed when using Flask-WTF

    if request.method == 'POST' and form.validate():
        processed_text = model.most_similar(positive=[form.ms_3.data, form.ms_2.data], negative=[form.ms_1.data])
        return processed_text[0][0]

    return render_template('my-form.html', form=form)