본문 바로가기

53. django get_context_data 사용 - view

53.1. view.py 수정하기

43.2 Django 상세 페이지 등록 - view.py 에서 잠깐 언급했었습니다.

기본적인 기능은 장고가 제공할테니
로직 구현에 신경쓰세요라고 하듯이 편의성을 많이 제공하고 있습니다.

class blogList(generic.ListView):
    model = PyBlog

처음 장고를 시작했을때 화면의 목록 리스트 를 보여주는데..
이것만 가지고 동작하는게 참 신기하고 이상했습니다.
단 2줄 만에 끝나니까요.~

53.2. get_context_data - view.py

get, post, get_queryset을 get_context_data()을 오라이딩 하여 처리하도록 변경합니다.

super(blogDetail,self).get_context_data(**kwargs) #version python2.X 사용
super().get_context_data(**kwargs) #version python3.X 사용

super().get_context_data()로 부모클래의 기본 context를 호출합니다.
3.x부터는 super()만 사용해도 됩니다.
context에 쿼리 결과 넣고, html head에 들어갈 og, descript도 담아 놓았습니다.
처리가 다 되면 blog/blogDetail.html 로 랜더링합니다.

43.2 Django 상세 페이지 등록 - view.py 소스보다 좀 더 깔끔합니다.^__^

#myapp/blog/views.py
from django.shortcuts import render
from django.views import generic
from django.utils.functional import cached_property
from .models import PyBlog, PyBlogDetail

class blogList(generic.ListView):
    model = PyBlog

class firstIndex(blogList, generic.View):
    template_name = "index.html"

    def get_context_data(self, **kwargs):
        context             = super().get_context_data(**kwargs)
        context['title_nm'] = "00 클라우드 서버 구축부터 Django 사이트 오픈까지"
        context['ogImgUrl'] = "https://i.ibb.co/nP1QDt1/nginx-uwsgi-django-mysql.png"
        context['descript'] = "현재 보고 계시는 pythonblog는 처음 시작부터 로컬환경과 운영서버의 환경을 셋팅하고 python Django web framework를 활용하여 사이트를 오픈하는 과정이 담겨있습니다."
        return context

class blogDetail(blogList, generic.View):
    template_name   = "blog/blogDetail.html" 

    def get_context_data(self, **kwargs):
        context   = super().get_context_data(**kwargs)      
        query_set = PyBlog.objects.filter(id=self.kwargs['pk'])             
        query_set = query_set.values('id','title','update_dt','regist_dt',
                                    'pb_detail__detail_id',
                                    'pb_detail__sub_title','pb_detail__img_url','pb_detail__img_size',
                                    'pb_detail__content_body'
                                    ).order_by('pb_detail__sub_title')

        context['dataList'] = query_set
        context['title_nm'] = query_set[0]['title'] 
        context['descript'] = query_set[0]['pb_detail__content_body'][:320]
        context['ogImgUrl'] = query_set[0]['pb_detail__img_url']
        return context
현재글 : 53. django get_context_data 사용 - view
Comments
Login:

Copyright © PythonBlog 2021 - 2022 All rights reserved
Mail : PYTHONBLOG