Backend/Django

django 30. Field Lookup을 사용한 구독 페이지 구현

meong_j 2021. 10. 18. 18:59
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

 

QuerySet API reference | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

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 링크 시 구독한 게시물만 나옴
반응형