728x90
반응형
이번 프로젝트의 목표
장고에서 제공하는 DB Query를 위한 기능인 Field Lookup을 사용하여 사용자가 구독한 게시판의 게시글만 볼 수 있는 구독페이지 만듦
Field Lookups
- 장고가 제공하는 함수이며 복잡한 쿼리를 구현해주는 함수
- SQL 구문에서 WHERE 절에 해당되는 기능
예시]
(project__in=...) : 언더바 __ 는 sql에서
SELECT ... WHERE project IN (...); 와 같다.
https://docs.djangoproject.com/en/3.0/ref/models/querysets/#id4
views.py
@method_decorator(login_required, 'get')
class SubscriptionListView(ListView):
model = Article
context_object_name = 'article_list'
template_name = 'subscribeapp/list.html'
paginate_by = 5
def get_queryset(self):
projects = Subscription.objects.filter(user=self.request.user).values_list('project')
article_list = Article.objects.filter(project__in=projects)
return article_list
- values_list를 사용하여 Subscription의 내가 구독한 project 필드값들을 list화 시킴
- list화 시킨 projects를 Field Lookups 형태로 만들어줌
list.html
{% extends 'base.html' %}
{% block content %}
<div>
{% include 'snippets/list_fragment.html' with article_list=article_list %}
</div>
{% endblock %}
- return 받은 article_list html로 전달
urls.py
path('list/', SubscriptionListView.as_view(), name='list'),
- 구독한 게시물 list url 추가
- Subscription 링크 시 구독한 게시물만 나옴
반응형
'Backend > Django' 카테고리의 다른 글
Django message 구현 (0) | 2021.12.02 |
---|---|
django 31. WYSIWYG 의 소개 및 적용 (0) | 2021.10.18 |
django 29. RedirectView을 통한 SubscribeApp시작 (0) | 2021.10.13 |
django 28. MultipleObjectMixin을 통한 ProjectApp 마무리 (0) | 2021.10.13 |
django 27. 모바일 디버깅, 반응형 레이아웃 (0) | 2021.10.12 |