Получить параметр запроса в синдикации django?
Вот 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 - создать ленту из извлеченной переменной (которая представляет собой слаг, обращающийся к связи "многие ко многим").
1 ответ
Прежде всего, установите свой параметр в диспетчере URL-адресов django. Что-то вроде:
url(r'^feed/(?P<pid>\w+)/$', SomeFeed())
Теперь получите и верните хеш из URL с помощью метода get_object в вашем классе фидов. В конце концов, получите хеш как второй параметр вашего метода 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]