2

这是一个包含超级机密提要哈希的 url:

http://127.0.0.1:8000/something/feed/12e8e59187c328fbe5c48452babf769c/

我正在尝试捕获并发送变量'12e8e59187c328fbe5c48452babf769c'feed_hash作为检索特定条目的块)

基于django-syndication中的示例,我在 feeds.py 中创建了这个简单的类

class SomeFeed(Feed):
    title = 'feed title '+request.feed_hash #just testing
    link = "/feed/"
    description = "Feed description"

    def items(self):
        return Item.objects.order_by('-published')[:5]

    def item_title(self, item):
        return item.title

    def item_description(self, item):
        return item.content

    # item_link is only needed if NewsItem has no get_absolute_url method.
    def item_link(self, item):
        return 'link'

因此我想知道,我将如何修改它以根据哈希获得模型?

目前我无法12e8e59187c328fbe5c48452babf769c以任何方式访问。我如何访问它并且——以标准的 Django 方式——从检索到的变量创建一个提要(它代表一个访问多对多关系的 slug。)

4

1 回答 1

1

首先,在 django URL dispatcher 中设置你的参数。就像是:

url(r'^feed/(?P<pid>\w+)/$', SomeFeed())

现在使用提要类上的 get_object 方法从 URL 检索并返回哈希值。毕竟,将哈希作为方法 items() 的第二个参数。

class SomeFeed(Feed):
    def get_object(self, request, pid):
        # expect pid as your second parameter on method items()
        return pid 

        # you can also load an instance here and get it the same way on items()
        return SomeFeed.objects.get(pk=pid)

    def items(self, feed):
        # filter your feed here based on the pid or whatever you need..
        return Item.objects.filter(feed=feed).order_by('-published')[:5]
于 2015-12-07T01:14:44.333 回答