기술블로그-Django편

📌 Django render()와 context 완전 정리 + 템플릿 활용 예시

Chansman 2025. 5. 7. 15:21

📌 Django render()와 context 완전 정리 + 템플릿 활용 예시


✅ 1. render() 함수란?

Django에서 HTML 페이지를 사용자에게 보여줄 때 사용하는 함수입니다.

return render(request, 'template.html', context)
  • 첫 번째 인자: 현재 요청 객체 (request)
  • 두 번째 인자: 렌더링할 템플릿 파일 경로 (templates/ 기준)
  • 세 번째 인자: 템플릿에 넘겨줄 데이터 (context 딕셔너리)

🧩 2. context란?

context는 템플릿에서 사용할 데이터 묶음입니다.
파이썬의 딕셔너리(dict) 형태로 구성되어 있으며, 템플릿 안에서 {{ key }} 형태로 사용됩니다.

예시:

context = {
    'blog': blog,
    'form': form,
}

➡ 템플릿에서 {{ blog.title }}, {{ form.as_p }} 등으로 활용 가능


✏️ 3. 예시 코드 (views.py)

@login_required
def blog_update(request, pk):
    blog = get_object_or_404(Blog, pk=pk)
    form = BlogForm(request.POST or None, instance=blog)

    context = {
        'blog': blog,
        'form': form
    }
    return render(request, 'blog_update.html', context)

🎨 4. 템플릿에서의 활용 예시 (blog_update.html)

<h1>블로그 수정하기</h1>

<!-- 제목 출력 -->
<h2>{{ blog.title }}</h2>
<p>작성자: {{ blog.author.username }}</p>

<!-- 수정 폼 출력 -->
<form method="POST">
    {% csrf_token %}
    {{ form.as_p }}  <!-- 폼 필드를 <p> 태그로 자동 출력 -->
    <button type="submit">수정하기</button>
</form>

💡 5. context 전달 예시와 템플릿 대응

context key 설명 템플릿에서 사용하는 방법

'blog' 수정할 Blog 객체 {{ blog.title }}, {{ blog.author }}
'form' 입력 폼 객체 {{ form.as_p }}, {{ form.title }}

➡ 폼 객체는 form.as_p, form.as_table, form.as_ul 형태로 렌더링 가능


✅ 6. 요약 정리

구성 요소 설명

render() 요청에 따라 HTML 페이지를 출력하는 함수
context 템플릿에 전달할 데이터 딕셔너리
{{ ... }} 템플릿에서 context 데이터를 꺼내 쓰는 표현법

Django에서 render()와 context는 템플릿과 백엔드 데이터를 연결하는 핵심 통로입니다.
이를 이해하면 폼 출력, 객체 속성 출력, 동적 페이지 구성이 훨씬 자연스러워집니다! 😉