2015-07-04 119 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]