블로그 응용 프로그램에서 Django의 클래스 기반 제네릭 뷰를 사용하고 있습니다. 내보기 중 하나는 특정 태그가있는 게시물 목록을 표시합니다. 이보기는 태그로 필터링 된 게시물의 ListView
개를 쓸 수 있습니다. 또는이보기를 태그의 DetailView
으로 작성하고 관련 게시물을 컨텍스트에 추가 할 수 있습니다.Django 일반보기 : ListView와 DetailView를 사용해야하는 경우
다른 방법보다 한 가지 방법이 더 적절합니까?
ListView
접근 방식은 더 의미가 있습니다. 왜냐하면 내가 원하는 것은 목록입니다.하지만 역시 약간 더 복잡합니다. 그것은 내가 두 가지 방법을 덮어 쓸 것을 요구한다. DetailView
접근 방식을 사용하면 하나의 방법을 덮어 쓰면됩니다.
class PostTagView(ListView):
"""Display all blog posts with a given tag."""
queryset = Post.objects.published()
def get_context_data(self, **kwargs):
context = super(PostTagView, self).get_context_data(**kwargs)
context['tag'] = get_object_or_404(Tag, slug=self.kwargs['slug'])
return context
def get_queryset(self, **kwargs):
queryset = super(PostTagView, self).get_queryset()
return queryset.filter(tags__slug=self.kwargs['slug'])
class TagDetailView(DetailView):
"""Display all blog posts with a given tag."""
model = Tag
def get_context_data(self, **kwargs):
context = super(TagDetailView, self).get_context_data(**kwargs)
context['object_list'] = Post.objects.published().filter(tags__slug=self.kwargs['slug'])
return context
URL 매개 변수와 일치시키는 것이 좋습니다. – user1272534
좋은 답변입니다. 이제 어떻게 페이지 매김 하시겠습니까? 목록보기를 사용하면 사소한 일입니다. 자세히보기로, 나는 길을 잃는다. ( –
@DanGayle :'DetailView'는 페이지가 지정되어서는 안되며, 하나의 객체에만 사용하도록되어 있습니다. –