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
다음글 :
54. 서브메뉴 만들기 - 이전/다음 기능
Comments
Login: