在 Flask 中打印列表
Printing a list in Flask
我希望脚本列出它从 Reddit 抓取的新闻标题,并将它们显示为文本输出。然而,似乎 return 函数阻止我这样做,因为它只列出了一个标题。
from flask import Flask
import praw
import config
app = Flask(__name__)
@app.route('/')
def index():
reddit = praw.Reddit(client_id=config.client_id, client_secret=config.client_secret, user_agent="...")
for submission in reddit.subreddit('worldnews').controversial(limit=10):
print(submission.title)
return(submission.title)
if __name__ == "__main__":
app.run(debug=True)
鉴于该代码,for 没有执行任何操作。
使内容正常运行的最简单方法是将每个标题附加到一个列表中,然后 return 该数组仅作为文本。它应该是这样的:
from flask import Flask
import praw
import config
app = Flask(__name__)
@app.route('/')
def index():
reddit = praw.Reddit(client_id=config.client_id, client_secret=config.client_secret, user_agent="...")
list = []
for submission in reddit.subreddit('worldnews').controversial(limit=10):
list.append(submission.title)
return("<p>" + "</p><p>".join(list) + "</p>")
if __name__ == "__main__":
app.run(debug=True)
有一个答案向您展示了执行此操作的简单方法,但我想向您展示如何使用模板来执行此操作,因为这是一种更好的做法:
main.py
:
from flask import Flask
import praw
import config
app = Flask(__name__)
@app.route('/')
def index():
reddit = praw.Reddit(client_id=config.client_id, client_secret=config.client_secret, user_agent="...")
reddit_data = []
for submission in reddit.subreddit('worldnews').controversial(limit=10):
reddit_data.append(submission.title)
return render_template("show_reddit.html", data=reddit_data)
if __name__ == "__main__":
app.run(debug=True)
templates/show_reddit.html
:
{% for item in data %}
<p> {{ item }} </p>
{% endfor %}
在模板中,您可以正常使用 HTML 打印内容并制作 for
循环,您可以使用 Jinja2.
我希望脚本列出它从 Reddit 抓取的新闻标题,并将它们显示为文本输出。然而,似乎 return 函数阻止我这样做,因为它只列出了一个标题。
from flask import Flask
import praw
import config
app = Flask(__name__)
@app.route('/')
def index():
reddit = praw.Reddit(client_id=config.client_id, client_secret=config.client_secret, user_agent="...")
for submission in reddit.subreddit('worldnews').controversial(limit=10):
print(submission.title)
return(submission.title)
if __name__ == "__main__":
app.run(debug=True)
鉴于该代码,for 没有执行任何操作。
使内容正常运行的最简单方法是将每个标题附加到一个列表中,然后 return 该数组仅作为文本。它应该是这样的:
from flask import Flask
import praw
import config
app = Flask(__name__)
@app.route('/')
def index():
reddit = praw.Reddit(client_id=config.client_id, client_secret=config.client_secret, user_agent="...")
list = []
for submission in reddit.subreddit('worldnews').controversial(limit=10):
list.append(submission.title)
return("<p>" + "</p><p>".join(list) + "</p>")
if __name__ == "__main__":
app.run(debug=True)
有一个答案向您展示了执行此操作的简单方法,但我想向您展示如何使用模板来执行此操作,因为这是一种更好的做法:
main.py
:
from flask import Flask
import praw
import config
app = Flask(__name__)
@app.route('/')
def index():
reddit = praw.Reddit(client_id=config.client_id, client_secret=config.client_secret, user_agent="...")
reddit_data = []
for submission in reddit.subreddit('worldnews').controversial(limit=10):
reddit_data.append(submission.title)
return render_template("show_reddit.html", data=reddit_data)
if __name__ == "__main__":
app.run(debug=True)
templates/show_reddit.html
:
{% for item in data %}
<p> {{ item }} </p>
{% endfor %}
在模板中,您可以正常使用 HTML 打印内容并制作 for
循环,您可以使用 Jinja2.