Python 无法获取搜索结果
我刚开始学习Flask,我正试图在我的新闻标题网站上使用一个简单的搜索表单,但当我提交搜索时,它似乎不起作用,我正在使用一个简单的Flask get请求 这是我的密码:Python 无法获取搜索结果,python,python-3.x,flask,Python,Python 3.x,Flask,我刚开始学习Flask,我正试图在我的新闻标题网站上使用一个简单的搜索表单,但当我提交搜索时,它似乎不起作用,我正在使用一个简单的Flask get请求 这是我的密码: import feedparser from flask import Flask from flask import render_template from flask import request app = Flask(__name__) rss_feed = {'wsj': "https://feeds.a
import feedparser
from flask import Flask
from flask import render_template
from flask import request
app = Flask(__name__)
rss_feed = {'wsj': "https://feeds.a.dj.com/rss/RSSWSJD.xml",
'cnbc': "https://www.cnbc.com/id/100003114/device/rss/rss.html",
'washington_post': "http://feeds.washingtonpost.com/rss/politics?itid=lk_inline_manual_2"}
@app.route("/")
def get_news():
query = request.args.get('publication')
if not query or query.lower not in rss_feed:
publication = 'wsj'
else:
publication = query.lower
feed = feedparser.parse(rss_feed[publication])
return render_template("home.html", articles=feed['entries'])
if __name__ == "__main__":
app.run(port=5000, debug=True)
和我的html代码:
<html>
<head>
<title>Headlines</title>
</head>
<body>
<h1>Headlines</h1>
<form>
<input type="text" name="publication" placeholder="search">
<input type="submit" value="Submit">
</form>
{% for article in articles %}
<b><a href="{{article.link}}">{{article.title}}</a></b><br />
<i>{{ article.published }}</i><br />
<p>{{ article.summary }}</p>
<hr />
{% endfor %}
</body>
</html>
标题
标题
{文章%中的文章为%s}
{{article.published}}
{{article.summary}}
{%endfor%}
现在,当我提交对“cnbc”的搜索时,它仍然显示“wsj”的搜索结果。我的代码有什么问题?我在代码中添加了4个不同的注释作为注释,请查看词汇表。 以下是解决方案: Python文件,这里是错误发生的地方,long-stoyry-short-if语句总是返回True,因此发布变量被设置为“wsj” HTML文件
请通过
javascript
和ajax
-在调用服务器API后动态更改html。使用断点是理解和查找错误的更好方法。提供请求的URL以获取问题的完整详细信息。如果我正在搜索“cnbc”,请求的URL取决于搜索。例如,请求的URL将检查我的回答谢谢大家@FedericoBaù,但为什么返回view.html两次?第一次(返回render_模板(“view.html”))是呈现模板并显示HTML网页。正如您所看到的,这里没有articles=feed['entries']变量(否则会引发错误)。第二个变量是在If语句之后显示搜索结果。在本例中,因为您使用的是html表单,表单的结果在同一页面中,您希望留在同一页面中,只呈现新项目。但如果你把方向转到其他地方,这种方法会更明显。有这样使用的返回重定向(url\u例如('example'))
。首先呈现模板,然后在IF语句之后(通常是因为表单),它会重定向,但因为你哪里都不去,所以看起来有点奇怪。
import feedparser
from flask import render_template, request, Flask
# Note 1
app = Flask(__name__)
rss_feed = {'wsj': "https://feeds.a.dj.com/rss/RSSWSJD.xml",
'cnbc': "https://www.cnbc.com/id/100003114/device/rss/rss.html",
'washington_post': "http://feeds.washingtonpost.com/rss/politics?itid=lk_inline_manual_2"}
@app.route("/")
def get_news():
if request.args.get('publication'):
query = request.args.get('publication').lower() # Note 2
print(f'Query is : {query}') # Note 4
if not query or query not in rss_feed: # Note 3
print('Publication is wsj') # Note 4
publication = 'wsj'
else:
print('Publication is the query entry') # Note 4
publication = query
feed = feedparser.parse(rss_feed[publication])
return render_template("view.html", articles=feed['entries'])
return render_template("view.html")
if __name__ == "__main__":
app.run(port=5000, debug=True)
<html>
<head>
<title>Headlines</title>
</head>
<body>
<h1>Headlines</h1>
<!-- Note 5 -->
<form method="GET">
<input type="text" name="publication" placeholder="search">
<input type="submit" value="Submit">
</form>
{% for article in articles %}
<b><a href="{{article.link}}">{{article.title}}</a></b><br />
<i>{{ article.published }}</i><br />
<p>{{ article.summary }}</p>
<hr />
{% endfor %}
</body>
</html>
@app.route("/")
def get_news():
if request.args.get('publication'):
query = request.args.get('publication').lower()
if not query or query not in rss_feed:
publication = 'wsj'
feed = feedparser.parse(rss_feed[publication])
return render_template("view.html", articles=feed['entries'])
publication = query
feed = feedparser.parse(rss_feed[publication])
return render_template("view.html", articles=feed['entries'])
return render_template("view.html")