ํฌ์ŠคํŠธ

TemplateHTMLRenderer

TemplateHTMLRenderer

๐Ÿ”Ž TemplateHTMLRenderer

DRF docs-topic

์˜ค๋Š˜์€ ์—ฌํƒœ๊นŒ์ง€ ํ†ต์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋˜ 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')

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.