TemplateHTMLRenderer
๐ TemplateHTMLRenderer
์ค๋์ ์ฌํ๊น์ง ํต์์ ์ผ๋ก ์ฌ์ฉํ๋ JSONRednerer๋ง๊ณ HTMLRenderer๋ฅผ ์ฌ์ฉํด๋ดค๋ค.
TemplateHTMLRenderer ํด๋์ค๋ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค์ผํ๋ค. ๋ณดํต context๋ผ๋
๋ณ์๋ฅผ ํตํด ๋๊ฒจ์ฃผ๋๊ฑฐ ๊ฐ๋ค.
ex. context = {โkeyโ:vlaue}
๊ทธ๋ฆฌ๊ณ template_name์ ์ง์ ํด์ฃผ๋๋ฐ, view ๋๋ ๋ฆฌํด ๊ฐ์์ ์ง์ ํด์ค๋ค.
๐ ์ ์ฒด ๊ฒ์๋ฌผ ํ์ธ
views ```python
CASE1. view์ template_name ์ง์ .
class PostList(APIView): renderer_classes = [TemplateHTMLRenderer] template_name = โposts/post_list.htmlโ
1
2
3
4
5
6
def get(self, request):
post = Post.objects.all()
context = {
"post" : post
}
return Response(context)
CASE2. ๋ฆฌํด ๊ฐ์ template_name ์ง์ .
class PostList(APIView): renderer_classes = [TemplateHTMLRenderer]
1
2
3
4
5
6
def get(self, request):
post = Post.objects.all()
context = {
"post" : post
}
return Response(context,template_name = 'posts/post_list.html') ```
๐ ๊ฒ์๋ฌผ ์์
view ```python class PostEditView(GenericView): serializer_class = PostViewSerializer rendered_classes = [TemplateHTMLRenderer]
1
2
3
4
5
6
7
def post(request,pk):
post = get_object_or_404(Post, pk=pk)
serializer = self.serializer_class(post, data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return redirect('post-list') ```
๐ ๊ฒ์๋ฌผ ์ฌ๋ฆฌ๊ธฐ
views
django๋ฅผ ํ ๋๋, post๋ฅผ ํ ๋ if request.method == 'post' ๋ก ์์ํ์๋ค.
์ฌ๊ธฐ์๋ ๋ง์ฐฌ์๊ธฐ๋ก ๋น serializer ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ณ ๊ฑฐ๊ธฐ์์ post๋ฅผ ํ์ด์ผํ๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class PostingPostView(GenericAPIView):
renderer_classes = [TemplateHTMLRenderer]
serializer_class = PostViewSerializer
template_name = 'posts/posting.html'
def get(self,request):
serializer = self.serializer_class(data=request.data)
serializer.is_valid()
return Response({"serializer":serializer})
def post(self,request):
serializer = self.serializer_class(data=request.data)
serializer.is_valid()
serializer.save(user_id=ruquest.user)
return redirect('post-list')
๐ ๊ฒ์๋ฌผ ์ญ์
views
1
2
3
4
5
6
7
8
9
10
11
12
13
class PostDeleteView(GenericAPIView):
renderer_classes = [TemplateHTMLRenderer]
serializer_class = PostViewSerializer
template_name = 'posts/post_delete.html'
def get(self,request,pk):
post = get_object_or_404(Post, pk=pk)
return Response({"post":post})
def post(self, request, pk):
post = get_object_or_404(Post, pk=pk)
post.delete()
return redirect('posts:post-list')