所以,我在玩《星球大战》的swapi,把API搜索结果作为一个字符串呈现在一个html文件上,但是我似乎无法按行分隔字符串中的标题:
from flask import Flask, render_template, request, redirect
import requests
import json
import swapi
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
url = "https://swapi.co/api/"
star_wars_api = requests.get(url)
result = ''
if request.method == 'POST':
films = requests.get(star_wars_api.json()['films'])
if films.status_code == 200:
if request.form['search'] == "films":
film_json = films.json()
for film in film_json['results']:
result += str(film['title'])
return render_template('index.html', results=result)
else:
return render_template('index.html')
if __name__ == "__main__":
app.run(debug=True)
以下是HTML文件:
{% extends 'base.html'%}
{% block head %} {% endblock %}
{% block body %}
<form action="/" method="POST">
<label for="search">Search:</label>
<input class="form-control" type="text" name="search" id="search" placeholder="Search" aria-label="Search">
<br>
<input type="submit" value="Post">
</form>
<p> {{ results }}</p>
{% endblock %}
以下是输出:(在index.html
页上)
“克隆人的新希望帝国反击原力觉醒时幽灵的威胁对绝地武士的报复”(不带引号)
在HTML中,您必须使用
<br>
而不是\n
来将文本放入新行。你知道吗您应该以列表的形式获取标题,然后使用
"<br>".join(titles)
或者你应该发送标题列表到模板
并在模板中使用
{% for %}
循环最后你应该给每个标题加上
'\n'
使用
<pre>
而不是<p>
,它将尊重"\n"
(但它将使用单空格字体,因为它是为了显示代码而创建的-就像答案中的代码一样)相关问题 更多 >
编程相关推荐