Python 如何将带有 HTML 列表的变量名分配给(方法?)
Python How do I assigning a variable name with an HTML list to a (method?)
请原谅我的标题措辞不佳,因为我还在学习Python。
问题是在我的 Python 脚本中,我希望 .hot 被一个名为 instance 的变量替换,该变量具有来自我的 HTML 文件的选项。不幸的是,由于某些我还不明白的原因,我不能只用 'instance' 或 str(instance()) 替换 'hot'。如果有人能帮我解决这个问题那就太好了!
谢谢
这是有问题的 Python 脚本
@app.route('/', methods=['POST'])
def index_post():
subreddit = request.form['subreddit']
instance = request.form['instance']
num = request.form['limit']
news = []
i = 0
for submission in reddit.subreddit(subreddit).hot(limit=int(num)):
i += 1
news.append(str(i) + '. ' + submission.title)
return render_template("index.html", news=news)
这是我的 HTML 模板。
<!doctype html>
<form action="." method="POST">
Subreddit name:
<input type="text" name="subreddit" placeholder="Topic">
Instance:
<select name="instance">
<option value="controversial">Controversial</option>
<option value="gilded">Gilded</option>
<option value="hot">Hot</option>
<option value="new">New</option>
<option value="rising">Rising</option>
<option value="top">Top</option>
</select>
Limit:
<input type="number" name="limit">
<input type="submit" value="Search">
</form>
{% for item in news %}
<p> {{item}} </p>
{% endfor %}
如果我理解你的问题,你想做这样的事情:
redditFunction = getattr(reddit.subreddit(subreddit), instance)
for submission in redditFunction(limit=int(num)):
...
当 instance
是 new
这应该调用
reddit.subreddit(subreddit).new(limit=int(num))
gettattr
获取传递给它的第一个参数的属性,该参数以第二个属性命名。因此,您将获得在 instance
变量中命名的函数,它(希望)是您尝试调用的函数。
请原谅我的标题措辞不佳,因为我还在学习Python。 问题是在我的 Python 脚本中,我希望 .hot 被一个名为 instance 的变量替换,该变量具有来自我的 HTML 文件的选项。不幸的是,由于某些我还不明白的原因,我不能只用 'instance' 或 str(instance()) 替换 'hot'。如果有人能帮我解决这个问题那就太好了!
谢谢
这是有问题的 Python 脚本
@app.route('/', methods=['POST'])
def index_post():
subreddit = request.form['subreddit']
instance = request.form['instance']
num = request.form['limit']
news = []
i = 0
for submission in reddit.subreddit(subreddit).hot(limit=int(num)):
i += 1
news.append(str(i) + '. ' + submission.title)
return render_template("index.html", news=news)
这是我的 HTML 模板。
<!doctype html>
<form action="." method="POST">
Subreddit name:
<input type="text" name="subreddit" placeholder="Topic">
Instance:
<select name="instance">
<option value="controversial">Controversial</option>
<option value="gilded">Gilded</option>
<option value="hot">Hot</option>
<option value="new">New</option>
<option value="rising">Rising</option>
<option value="top">Top</option>
</select>
Limit:
<input type="number" name="limit">
<input type="submit" value="Search">
</form>
{% for item in news %}
<p> {{item}} </p>
{% endfor %}
如果我理解你的问题,你想做这样的事情:
redditFunction = getattr(reddit.subreddit(subreddit), instance)
for submission in redditFunction(limit=int(num)):
...
当 instance
是 new
这应该调用
reddit.subreddit(subreddit).new(limit=int(num))
gettattr
获取传递给它的第一个参数的属性,该参数以第二个属性命名。因此,您将获得在 instance
变量中命名的函数,它(希望)是您尝试调用的函数。