【发布时间】:2018-04-08 16:56:55
【问题描述】:
我的目标是让用户在文本框中输入一个项目,单击“添加”并将该项目添加到列表中。用户应输入 X 数量的项目,然后单击提交。然后我想使用 python 来操作该项目列表。
这是我的 HTML 模板的样子:
<!DOCTYPE html>
<html>
<head>
<title> Foo </title>
</head>
<body>
<form action="" method="post">
<div class="input text" id = "items">
{{ form.item.label }} {{form.item}}
</div>
<input type="button" id="btnAdd" value="Add" onclick="addItem()">
<ul id = "itemlist" name = "itemlist">
</ul>
<script>
function addItem(){
var ul = document.getElementById("itemlist");
var li = document.createElement("li")
var children = ul.children.length + 1
li.setAttribute("id", "item"+children)
var input = item.value;
li.appendChild(document.createTextNode(input));
ul.appendChild(li)
}
</script>
<div class="input submit">
<input type="submit" value="Submit" />
</div>
</form>
</body>
</html>
这是我当前的 Python 脚本的样子:
from flask import Flask, render_template, flash, request
from wtforms import Form, TextField, TextAreaField, validators, StringField, SubmitField
from bs4 import BeautifulSoup
import requests
DEBUG = True
app = Flask(__name__)
app.config.from_object(__name__)
class ReusableForm(Form):
item = TextField('Item:', validators=[validators.required()])
@app.route("/", methods=['GET', 'POST'])
def foo():
form = ReusableForm(request.form)
if request.method == 'POST':
content = request.form['itemlist']
print(content)
return render_template('index.html', form=form)
if __name__ == "__main__":
app.run()
主要问题在于我的“content = request.form['itemlist']”行。单击提交按钮时,我似乎找不到将列表从 html 传递到 python 的好方法。我以后的目标是为用户创建的列表中的项目抓取特定的网站。
【问题讨论】:
-
运行
print(content)的结果是什么? -
我收到错误请求错误。我也尝试过使用 request.form.get('itemlist'),但这只是返回 None。
标签: javascript python jquery html flask