컴굥일지

[Django Study 15] Subscribeapp Implementation 본문

프로그래밍 강의/Django

[Django Study 15] Subscribeapp Implementation

gyong 2022. 5. 14. 03:10
반응형

[RedirectView을 통한 SubscribeApp 시작]

  • python manage.py startapp subscribe app
  • settings.py에 subscribeapp 추가
  • urls.py에 subscribeapp으로 가는 경로를 생성
  • 앞서 진행한 앱 생성 방법과 동일

[Field Lookup을 사용한 구독 페이지 구현]

  • Model.objects.filter(pk = xxx, user= xxx)에서 (pk = xxx, user= xxx)는 And function
  • Or function 도 존재
  • WHERE statement 도 존재

앞으로 구현할 것

  1. 유저가 구독하고 있는 프로젝트를 확인하는 것
  2. 그 프로젝트 안에 있는 모든 게시물들을 가져오는 것

원래는 예를 들어 Articlesl.objects.filter(pk = xxx, user= xxx) 에서 이제 다음과 같은 형태로 변경Articles.objects.filter(project__in = projects)

이것이 바로 장고에서 말하는 field lookups이다 정확히 말하면 double underscore! 이것이 장고에서 사용하는 기능

SQL 안에서는 SELECT....WHERE project IN(...); 이렇게 작동이 된다

subscribe app 파일의 views.py에 아래 코드 추가

@method_decorator(login_required, 'get')    
class SuscriptionListView(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)
        retuern article_list

subscribe app 내에 templates 파일 생성 후 그 안에 subscribeapp 파일 생성 후 list html 만들기

list.html에 아래 코드 작성

{% extends 'base.html' %}

{% block content %}

    <div>
        {% include 'scrippts/list_pragment.html' with article_list = article_list %}
    </div>

{% endblock %}

이후 urls파일로 가서 경로를 생성해준다

path('list/', SubscriptionListView.as_view(), name='list'),

마지막으로 앱에 종속되어 있지 않는 templates파일의 head.html로 가서 아래 코드 추가하여 구독 버튼 생성

<a href = "{% url 'accountapp : login'%}?next ={{ request.path }}" >
    <span>Subscription</span>
</a>


[출처] 작정하고 장고! Django Pinterest 따라만들기 : 바닥부터 배포까지

섹션 9. Subscribeapp Implementation (42강 ~ 43강)

https://www.inflearn.com/course/%EC%9E%A5%EA%B3%A0-%ED%95%80%ED%84%B0%EB%A0%88%EC%8A%A4%ED%8A%B8/dashboard

반응형
Comments