2010-07-20 4 views
1

특정 태그 아래에 블로그 게시물의 최신 항목 피드를 생성하려고합니다. 나는 장고 태깅을 사용했다. 내가 어떻게 할 수 있니? 여기에 내가 정의하는 방법입니다 내 LatestEntriesFeeddjango는 특정 태그에 대한 피드를 생성합니다.

from django.core.exceptions import ObjectDoesNotExist 
from django.utils.feedgenerator import Atom1Feed 
from django.contrib.sites.models import Site 
from django.contrib.syndication.feeds import Feed 
from articles.models import Entry 

current_site = Site.objects.get_current() 

class LatestEntriesFeed(Feed): 
    title = 'Latest Entries for %s' % current_site 
    link = '/feeds/latest/' 
    description = 'Latest entries posted.' 

    def items(self): 
     return Entry.live.all()[:100] 

    def item_pubdate(self, item): 
     return item.pub_date 

    def item_guid(self, item): 
     return "tag:%s,%s:%s" % (current_site.domain, 
      item.pub_date.strftime('%Y-%m-%d'), 
      item.get_absolute_url()) 

답변

1

는 folowing에 items 방법을 변경합니다

from tagging.models import Tag, TaggedItem 

def items(self): 
    tag = Tag.objects.get(name='you tag name') 
    return TaggedItem.objects.get_by_model(Entry, tag) 
+0

도움이 될만한 정보를 주신 alex에게 감사드립니다. LatestEntriesFeed를 서브 클래 싱하는 것을 생각하고 있습니다. –

2

() 나는 마침내 그것이 작동되도록 작동하는 방법 get_object을 실현 후.

from django.core.exceptions import ObjectDoesNotExist 
from tagging.models import Tag, TaggedItem 

class TagFeed(LatestEntriesFeed): 

    def get_object(self, bits): 
     if len(bits) != 1: 
      raise ObjectDoesNotExist 
     return Tag.objects.get(name__exact=bits[0]) 

    def title(self, obj): 
     return "%s: Latest entries under the tag '%s'" % (current_site.name, obj.name) 

    def description(self, obj): 
     return "%s: Latest entries under the tag '%s'" % (current_site.name, obj.name) 

    def items(self, obj): 
     return TaggedItem.objects.get_by_model(Entry, obj.name) 

내가/액세스 말할 수 있습니다 피드/태그/thetagnamehere/다음 get_object 이름 "thetagnamehere"와 태그 객체를 가져옵니다 : 나는 약간의 수입을 추가했습니다. 메소드 항목()은 "thetagnamehere"태그 아래에 항목을 가져옵니다. 또한 내 템플릿 디렉토리에 feeds/tag_title.html 및 feeds/tag_description.html을 만들었습니다. 내 프로젝트에서 urls.py :

feeds = { 
'latest': LatestEntriesFeed, 
'tag': TagFeed, 
} 

(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', 
    {'feed_dict': feeds},), 

그게 전부입니다. 이제 내 사이드 ​​바에서 특정 태그에 대한 피드를 생성 할 수 있습니다. 도움이되기를 바랍니다.