在 Flask 中打印列表

Mem*_*sue 2 python reddit flask praw

我希望脚本列出从 Reddit 中获取的新闻标题,并将它们显示为文本输出。然而,似乎返回函数阻止我这样做,因为它只列出一个标题。

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)
Run Code Online (Sandbox Code Playgroud)

小智 6

鉴于该代码, for 没有执行任何操作。

让某些内容正常工作的最简单方法是将每个标题附加到列表中并仅以文本形式返回该数组。它应该是这样的:

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)
Run Code Online (Sandbox Code Playgroud)


kem*_*mis 5

有一个答案向您展示了简单的方法,但我想向您展示如何使用模板来做到这一点,因为这是一个更好的做法:

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)
Run Code Online (Sandbox Code Playgroud)

templates/show_reddit.html

{% for item in data %}
    <p> {{ item }} </p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

在模板中,您可以正常使用 HTML 并打印出内容并for使用Jinja2进行循环。