2015-07-04 128 views
2

下面是一个包含哈希的超级秘密进一个网址:在django syndication中获取请求参数?

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

我试图捕捉和发送变量'12e8e59187c328fbe5c48452babf769c'这是feed_hash(充当塞检索特定的条目)

基于对Django的联合的例子中,我创建了一个feeds.py

这个简单的类3210
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方式 - 从检索的变量(它代表一个访问多对多关系的slu create)创建一个feed。)

+0

我觉得从Django的复杂的例子提要文档正是你想要的:https://docs.djangoproject.com/en/1.8/ref/contrib/syndication/#a-complex-example您捕捉将urls.py中的散列值映射到一个变量,该变量将在feed函数中可访问。 –

回答

0

首先,在django中设置你的参数网址分配器。例如:

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

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

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]