컴굥일지
[Django Study 15] Subscribeapp Implementation 본문
반응형
[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 도 존재
앞으로 구현할 것
- 유저가 구독하고 있는 프로젝트를 확인하는 것
- 그 프로젝트 안에 있는 모든 게시물들을 가져오는 것
원래는 예를 들어 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강)
반응형
'프로그래밍 강의 > Django' 카테고리의 다른 글
[Django Study 16] Django Wrap-up (0) | 2022.05.15 |
---|---|
[Django Study 14] Projectapp Implementation (0) | 2022.05.13 |
[Django Study 13] Mobile Responsive Layout (0) | 2022.05.08 |
[Django Study 12] Commentapp Implementation (0) | 2022.04.27 |
[Django Study 11] Articleapp Implementation (0) | 2022.04.26 |
Comments