Flask:为什么我的视图没有渲染我想要的模板?

2024-09-30 05:17:37 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我创建的类,flask mega教程的RegistrationForm模型

class eyeReaderInput(FlaskForm):
    article =  StringField('Article')
    submit = SubmitField('Enter')

我在这个视图中实现了这个类: 你知道吗

@app.route('/eyereader', methods=['GET', 'POST'])
def eyereader():

    form = eyeReaderInput()
    sTuple = ()

    if form.validate_on_submit():
        string = wikipedia.page(form.article.data)
        for chunk in textwrap.wrap(string, 15):
            sTuple += (chunk,)

        return render_template('eyereader.html', string = sTuple, form = form)
    else:
        return render_template('eyereader.html', form = form)

这是我的模板eyereader.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{% if string %}
<p><span>
    {% for s in string %}
    [{{s}}]<pre class="tab"></pre>
    {% endfor %}
</span></p>
{%  else %}

<p>Please input an article name</p>
<form action = "" method = "post">
    <p>{{ form.article.label}}<br>
       {{ form.article() }}</p>
    <p>{{ form.submit() }}</p>


</form>
{% endif %}
</body>
</html>

我希望用户首先使用“GET”请求访问eyereader站点(当我查看控制台时会发生这种情况),一旦用户插入他希望阅读的wikipedia文章,它就会发送一个带有新字符串参数的“POST”请求,该参数将使{% is string %}为真,而不是显示wikipedia文本

但是,当我测试这个时,“GET”和“POST”请求最终都会转到输入页。有人知道我能做些什么来让它工作吗?谢谢


Tags: formforgetstringifhtmlarticlewikipedia
1条回答
网友
1楼 · 发布于 2024-09-30 05:17:37

选项1:使用两个模板来处理条件内容,将每个模板绑定到不同的表单操作(GET/POST)

@app.route('/eyereader')
def show_template():
    return render_template("eyereader.html")

选项2:根据需要使用JavaScript动态填充内容

相关问题 更多 >

    热门问题