작장고

진단·2023년 7월 20일

작장고

목록 보기
7/7

Mixin 소개 및 Commentapp 구현

Mixin이란? 왜 필요한지

Untitled

각각 No object, No form

Untitled

예를들어 detail view에서 폼을 같이사용하고 싶을때 DetailView만으로는 해결이 안되기 때문에 사용

만든 commentapp을 detail.html에 붙이는 방법

Untitled

FormMixin:장고에서 제공하는 Mixin

Untitled

RedirectView를 통한 Subscribeapp 시작

  • model Untitled
    • user가 project를 구독(한 쌍)
    • 구독이 한 번만 가능하도록 unique_together 사용
  • SubscriptionView Untitled
    • RedirectView: view작업 후 바로 redirect가 일어나도록하는 view로 subscribe는 구독 버튼만 만들고 다른 로직이 없기 때문에 RedirectView를 상속하여 만든다
    • get_redirect_url: redirect url (pk값을 가지고 간다)
    • get_object_or_404: GET 방식으로 가져온 project_pk값과 같은 pk를 가진 project가 있으면 가져오고 없으면 404에러
    • Subscription.objects.filter(user=user, project=project): 위에서 찾은 user와 project가 같은 subscription을 찾아서 가져온다
  • ProjectDetailView Untitled project detail view의 get_context_data에 구독 정보 나타내기
    • 현재 user가 로그인되어있으면 subscription에 구독 정보를 가져와서 template으로 넘겨주기 위해서 return에 get_context_data에 넣어준다

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

Untitled

model을 주어진 조건을 나열(AND function)해 찾는다

OR function은?

어떤 user가 구독하는 project를 찾고, 그 project에 있는 article을 찾고 싶음

→ project__in

Untitled

  • SubscriptionListView Untitled
    • get_queryset(self): 커스텀해서 쿼리셋을 가져오는 조건을 바꿀 수 있다
    • user가 구독하는 project 모두를 projects에 가져오기 위해 filter로 현재 request한 user의 구독정보를 values_list로 project를 list형태로 만든다
    • user가 구독하는 project에 해당하는 article을 가져오기 위해 Field Lookup 사용(project__in=projects: project중 projects에 있는 것만 가져온다)

WYSIWYG의 소개 및 적용

→ 글쓸 때 사용하므로 form을 커스텀해야한다

Untitled

content의 textarea를 attrs를 사용해서 class와 style을 따로 지정해서 커스텀한다

project를 선택할 때 required를 false로 해 선택하지 않아도 되도록 커스텀한다

Untitled

| safe: content를 그대로 보여주지 않고 태그를 제외해준다

0개의 댓글