我试图在Django网页上显示我的视图函数的结果,但只获得一行没有超链接。
代码:
from django.http import HttpResponse
import feedparser
def index(content):
YahooContent = feedparser.parse ("http://news.yahoo.com/rss/")
for feed in YahooContent.entries:
content = (feed.title + ": " + "\n"+feed.link + "\n" + feed.published + "\n")
return HttpResponse(content)
网页上的结果:
男子因亚历克斯失踪而被捕。女孩:http://news.yahoo.com/arizona-girls-home-searched-body-found-154919366.html星期四,2014年9月4日14:05:16 -0400
答案 0 :(得分:4)
您需要在列表中收集订阅源,然后在循环之后返回HttpResponse
实例:
content = []
for feed in YahooContent.entries:
content.append(feed.title + ": " + "\n" + feed.link + "\n" + feed.published)
return HttpResponse('\n'.join(content))
Django philosophies关于问题分离的另一个选项是create and render a template并将数据传递到模板上下文中:
创建一个模板,假设index.html
包含以下内容
<table>
<tr>
<th>Title</th>
<th>Link</th>
<th>Published</th>
</tr>
{% for entry in entries %}
<tr>
<td>{{ entry.title }}</td>
<td>{{ entry.link }}</td>
<td>{{ entry.published }}</td>
</tr>
{% endfor %}
</table>
将模板放入您的应用或项目的templates
目录
from django.shortcuts import render_to_response
import feedparser
def index(content):
entries = feedparser.parse ("http://news.yahoo.com/rss/").entries
return render_to_response('index.html', {'entries': entries})
答案 1 :(得分:0)
你的回归&#39;语句位于for循环中,因为它在第一次迭代后返回,因此只提供一个feed而不是all,以便能够返回构建所有feed列表然后返回所需的所有feed。 / p>