기술블로그-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는 템플릿과 백엔드 데이터를 연결하는 핵심 통로입니다.
이를 이해하면 폼 출력, 객체 속성 출력, 동적 페이지 구성이 훨씬 자연스러워집니다! 😉