Python Flask:如何使用不在HTML表单标签内的超链接按钮从HTML文本区访问数据?



我正在制作一个简单的Flask web-app。

  • 它只接受文本输入。
  • 用户将输入文本并点击提交按钮。

我已经在Form HTML标签中创建了用于文本输入的textarea。我用超链接标签创建了一个Submit按钮

当点击Submit时,我如何访问文本区域内的文本?

注意:我不想使用表单标签中可用的默认提交选项。

HTML for Textarea:
<form action="{{ url_for('publish') }}" method="post">
<textarea name="text" class="form-control" rows="1" placeholder="Enter your message"></textarea>
</form>
HTML for Submit button:
<a href="{{ url_for('publish') }}" method="post"> Submit </a>

从用户处检索文本区域输入的Flask代码:

@app.route('/publish', methods=['GET', 'POST'])
def publish():
message = request.form['text']
print(message)
print('well')
return render_template('index.html')

基于这个问题Post方法到URL从一个onclick函数

为您的表单指定一个id,然后为您的链接指定一个onclick事件,如下所示:

<a onclick="document.getElementById('form-id').submit();" href="{{ url_for('publish') }}" method="post"> Submit </a>

之后你应该能够保持你的flask代码正常。

在表单元素中使用提交按钮会更容易。你总是可以用CSS来设计你喜欢的样式。如果您坚持不这样做,那么您将不得不在当前的Submit Button上添加一个'click'事件侦听器,该侦听器使用AJAX将文本区数据发送到端点。您可以选择使用普通JS、jquery或类似的方法。

然后在Flask中,你可以使用 来访问这些参数
from flask import request
# ... Definitions
args = request.get_json()
text = args['textarea_text'] # the key is whatever you use in your AJAX call
# ... Rest of endpoint
获取Flask请求中接收到的数据

在'index.html'是HTML的Textarea ?因为我看到路由'/publish'有'GET'方法。如果是,'index.html'应该首先用'GET'方法呈现,并且表单中的文本此时不可用。您只能在调用'POST'方法时获取文本。

@app.route('/publish', methods=['GET', 'POST'])
def publish():
if request.method == 'POST':
message = request.form['text']
print(message, flush=True)
return render_template('index.html')
else:
print('well', flush=True)
return render_template('index.html')

顺便说一下,您可以尝试将文本值放入request.form['text']:

<form action="{{ url_for('publish') }}" method="post">
<textarea name="text" id="text" class="form-control" rows="1" placeholder="Enter your message">{{ request.form['text'] }}</textarea>
</form>

最新更新