제네릭 뷰에서는
context
로 넘겨주는 데이터의기본값
이 있다. 즉, 지정해주지 않아도 자동으로 넘겨주는 데이터가 있으니 코드를 더 단순하게 작성할 수 있다.
ListView
에서기본값
이 할당된 데이터를 알아본다.
template_name
기본값은모델명_list.html
이므로 템플릿 이름이 일치한다면 삭제 가능
context_object_name
기본값은object_list
,모델명_list
이므로 템플릿에object_list
또는모델명_list
로 작성되어 있다면 삭제 가능
page_kwarg
기본값은page
이므로 템플릿에page
로 작성되어 있다면 삭제 가능
기존에 작성된 코드와
기본값
을 이용해 삭제한 변경된 코드를 비교하면 다음과 같다.
#기존
class PostListView(ListView):
model = Post
template_name = "posts/post_list.html" #기본값은 모델명_list.html
context_object_name = "posts" #기본값은 object_list, 모델명_list
ordering = ['-dt_created']
paginate_by = 9
page_kwarg = 'page' #기본값은 page
#변경
class PostListView(ListView):
model = Post
ordering = ['-dt_created']
paginate_by = 9
DetailView
에서기본값
이 할당된 데이터를 알아본다.
template_name
기본값은모델명_detail.html
이므로 템플릿 이름이 일치한다면 삭제 가능
pk_url_kwarg
기본값은pk
이므로url 패턴
에서<int:pk>
라면 삭제 가능
context_object_name
기본값은모델명
이므로 템플릿에 모델명으로 작성되었다면 삭제 가능
기존에 작성된 코드와
기본값
을 이용해 삭제한 변경된 코드를 비교하면 다음과 같다.
#기존
class PostDetailView(DetailView):
model = Post
template_name = "posts/post_detail.html" #기본값은 모델명_detail.html
pk_url_kwarg = "post_id" #기본값은 pk
context_object_name = "post" #기본값은 모델명
#변경
class PostDetailView(DetailView):
model = Post
CreateView
에서기본값
이 할당된 데이터를 알아본다.
template_name
기본값은모델명_form.html
이므로 템플릿 이름이 일치한다면 삭제 가능
기존에 작성된 코드와
기본값
을 이용해 삭제한 변경된 코드를 비교하면 다음과 같다.
#기존
class PostCreateView(CreateView):
model = Post
form_class = PostForm
template_name = "posts/post_form.html" #기본값은 모델명_form.html
def get_success_url(self):
return reverse("post-detail", kwargs={'post_id': self.object.id})
#변경
class PostCreateView(CreateView):
model = Post
form_class = PostForm
def get_success_url(self):
return reverse("post-detail", kwargs={'pk': self.object.id})
url 패턴
에서 상세 페이지의<int:post_id>를 <int:pk>로 변경
했으니kwargs=
의post_id
를pk
로 변경해야 한다.
UpdateView
에서기본값
이 할당된 데이터를 알아본다.
template_name
기본값은모델명_detail.html
이므로 템플릿 이름이 일치한다면 삭제 가능
pk_url_kwarg
기본값은pk
이므로url 패턴
에서<int:pk>
라면 삭제 가능
기존에 작성된 코드와
기본값
을 이용해 삭제한 변경된 코드를 비교하면 다음과 같다.
#기존
class PostUpdateView(UpdateView):
model = Post
form_class = PostForm
template_name = "posts/post_form.html" #기본값은 모델명_form.html
pk_url_kwarg = "post_id" #기본값은 pk
def get_success_url(self):
return reverse("post-detail", kwargs={"post_id": self.object.id})
#변경
class PostUpdateView(UpdateView):
model = Post
form_class = PostForm
def get_success_url(self):
return reverse("post-detail", kwargs={"pk": self.object.id})
url 패턴
에서 수정 페이지의<int:post_id>를 <int:pk>로 변경
했으니kwargs=
의post_id
를pk
로 변경해야 한다.
DeleteView
에서기본값
이 할당된 데이터를 알아본다.
template_name
기본값은모델명_detail.html
이므로 템플릿 이름이 일치한다면 삭제 가능
pk_url_kwarg
기본값은pk
이므로url 패턴
에서<int:pk>
라면 삭제 가능
context_object_name
기본값은모델명
이므로 템플릿에 모델명으로 작성되었다면 삭제 가능
기존에 작성된 코드와
기본값
을 이용해 삭제한 변경된 코드를 비교하면 다음과 같다.
#기존
class PostDeleteView(DeleteView):
model = Post
template_name = "posts/post_confirm_delete.html" #기본값은 모델명_confirm_delete.html
pk_url_kwarg = "post_id" #기본값은 pk
context_object_name = "post" #기본값은 모델명
def get_success_url(self):
return reverse("post-list")
#변경
class PostDeleteView(DeleteView):
model = Post
def get_success_url(self):
return reverse("post-list")