Django에서는
URL → View → Template 흐름을 통해
텍스트뿐 아니라 이미지 경로까지 동적으로 렌더링할 수 있습니다.
1. View에서 데이터 구성하기
def food_detail(request, food):
context = {}
if food == "chicken":
context["name"] = "코딩에 빠진 닭"
context["description"] = "주머니가 가벼운 당신의 마음까지 생각한 가격!"
context["price"] = 10000
context["img_path"] = "foods/images/chicken.jpg"
return render(request, "foods/detail.html", context)
- URL에서 전달받은 food 값으로 분기
- 화면에 필요한 데이터를 context에 담아 전달
- 이미지 경로도 문자열 데이터로 함께 전달
핵심:
이미지도 데이터다 → view에서 결정한다
2. Template에서 데이터 출력하기
{% load static %}
<h2>{{ name }}</h2>
<div>{{ description }}</div>
<p>{{ price }} 원</p>
<img src="{% get_static_prefix %}{{ img_path }}" />
- {{ name }}, {{ description }} → 텍스트 데이터 출력
- img_path는 static 경로 하위 파일명만 전달
- {% get_static_prefix %}로 static 기본 경로를 앞에 붙임
결과적으로 브라우저에서는 다음처럼 해석됩니다.
<img src="/static/foods/images/chicken.jpg">
3. 왜 get_static_prefix를 사용할까?
{% static "foods/images/chicken.jpg" %}
은 경로가 고정될 때 사용하고,
{% get_static_prefix %}{{ img_path }}
은 경로 일부가 동적일 때
즉,
- 이미지가 하나뿐이면 → {% static %}
- 이미지가 여러 개고 view에서 결정되면 → get_static_prefix
사용합니다.
4. 정리하면
- URL 값 → view로 전달
- view에서 데이터 + 이미지 경로 결정
- template에서 {{ 변수 }}로 출력
- static 이미지도 동적으로 렌더링 가능
“HTML은 그대로지만
들어가는 데이터가 바뀌면서 화면이 달라진다”
'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| [Model] 데이터 모델링과 마이그레이션 흐름 정리 (0) | 2026.01.04 |
|---|---|
| URL, View, Template의 관계 정리 (0) | 2026.01.04 |
| Django에서 동적 URL(Dynamic URL) 사용하기 (0) | 2026.01.04 |
| 데이터 전달로 동적 웹 페이지 개념 (0) | 2026.01.04 |
| Django 템플릿 상속 이해하기 (부모 · 자식 템플릿) (0) | 2026.01.04 |