장고:클래스형 뷰, 제네릭 뷰
편집하기
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{장고}} 작정하고 장고의 코드를 참고해 살펴보는 게 좋겠다. == 옮기다 말았음. == ===Mixin[따로 목차를 분류해야겠네;]=== 클래스 뷰를 사용할 때 특정한 기능이 다른 뷰로 분리되어 있을 때. 예컨대, DetailView에선 form이 없기 때문에 댓글을 쓸 수가 없다. 이땐 다중상속을 받아 기능을 구현할 수 있다.<syntaxhighlight lang="python"> class 뷰이름(DetailView, FormMixin): form_class = 폼이름 ... def form_valid(self, form): ... writer = self.request.user return super().form_valid(form) </syntaxhighlight>위와 같이 Mixin으로 없는 기능을 가져다 넣어 사용할 수 있다. <br /> ===MultipleObjectMixin=== 여러 오브젝트를 다루기 위한 믹스인.<syntaxhighlight lang="python"> class 뷰이름(DetailView, MultipleObjectMixin): form_class = 폼이름 ... paginate_by = 10 def get_context_data(self, **kwargs): object_list = 모델.objects.filter(필터링조건) return super(뷰이름,self).get_context_data(object_list=object_list, **kwargs) </syntaxhighlight>본문과 리스트를 동시에 띄우기 위한 작업이다. <br /> ==RedirectView== <syntaxhighlight lang="python"> class 뷰이름(RedirectView): def get_redirect_url(self, *args, **kwargs): return 보낼 주소 def get(self, request, *args, **kwargs): object = get_object_or_404(모델, pk=키값) </syntaxhighlight> =구독 기능= 찬찬히 보면서 옮기자.. 문제를 풀었는가 여부도 이걸로 구현 가능할듯. 유저와 프로젝트를 포린키로 가져온다. 모델작성<syntaxhighlight lang="python"> class 모델명(models.Model): class Meta: unique_together = ('속성1', '속성2') </syntaxhighlight>이 둘의 조합은 오직 하나만 존재하도록 설정한다. 이 모델을 filter로 불러와 유저와 객체가 일치하는 것을 찾아 구독관계를 찾곤 한다. filter(user=user, project=객체명) 형태로 일치하는지 여부만 찾으면 된다. <br /> ===필터 이후 처리=== 필터링으로 구독관계 객체를 불러왔다곤 하지만, 이것이 구독한 객체를 보여주지 않는다. 이를 위해 .values_list('모델명')이 쓰인다. 객체 = ...filter(조건).values_list('모델명') 형태로 쓰면 필터에 걸린 것들 중 해당 모델에 해당하는 것을 가져온다.(제한적으로 쓰일 것 같지만, 강력하고 어려운 개념이네;) 그럼 이를 불러오려는 모델처럼 다룰 수 있다. ===아이디어=== 게시글목록 중 글 자체에 대한 것과, 검색부분과... 다 따로만드는 게 좋을 듯하다. 글 자체에 대한 건 즐겨찾기 한 문제들을 불러올 수 있잖아. 옵션에 따라 글부분만 달리 나타낼 수도 있고. <br />
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에서 사용한 틀:
틀:장고
(
원본 보기
) (보호됨)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보