在Django中显示视图功能

时间:2014-09-04 18:40:06

标签: python django python-2.7 django-views

我试图在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

2 个答案:

答案 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目录

  • 使用例如render_to_response()

    在视图中渲染它
    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>