{% extends "base.html" %}
{% block title %}{{ agent.bsnm_cmpnm }} - 상세정보{% endblock %}
{% block content %}
{# JS 가 읽을 설정값 — 인라인 JS 없이 완전 분리 #}
<div class="rep-image" id="repImageBox">
{% if images %}
{% with primary_img=images|dictsort:"is_primary"|last %}
<img id="repImg"
src="{% if primary_img %}{{ primary_img.image.url }}{% else %}{{ images.0.image.url }}{% endif %}"
alt="{{ agent.bsnm_cmpnm }}">
{% endwith %}
{% if user.is_authenticated %}
<div class="img-overlay">
<button class="overlay-btn" id="btnShowChangePanel">📷 사진 변경</button>
{% for img in images %}
{% if img.uploaded_by == user or user.is_staff %}
<button class="overlay-btn btn-img-delete"
data-img-pk="{{ img.pk }}"
style="background:rgba(220,38,38,.88);color:#fff;">
🗑 삭제
</button>
{% endif %}
{% endfor %}
</div>
<div class="upload-panel" id="changePanel">
<button class="panel-close" id="btnCloseChangePanel" type="button">✕</button>
<input type="file" id="changeFileInput" accept="image/*" class="d-none">
<label for="changeFileInput" class="upload-trigger compact">
<span class="upload-icon">📷</span>
<span class="upload-text">파일 선택</span>
</label>
<p class="file-name-preview" id="changeFileName"></p>
<input type="text" id="changeCaptionInput"
placeholder="사진 설명 (선택)"
class="form-control form-control-sm mt-1 mb-2">
<button type="button" class="btn btn-primary btn-sm w-100" id="btnSubmitChange">업로드</button>
<div class="upload-feedback" id="changeFeedback"></div>
</div>
{% endif %}
{% else %}
{% if user.is_authenticated %}
<input type="file" id="newFileInput" accept="image/*" class="d-none">
<label for="newFileInput" class="upload-trigger" id="newUploadTrigger">
<span class="upload-icon">📷</span>
<span class="upload-text">사진 추가하기</span>
<span class="upload-hint">클릭하여 이미지 선택</span>
</label>
<div class="upload-panel inline-style" id="newUploadPanel">
<p class="file-name-preview" id="newFileName"></p>
<div class="progress-wrap" id="newProgressWrap">
<div class="progress" style="height:5px;">
<div id="newProgressBar" class="progress-bar bg-primary" style="width:0%;"></div>
</div>
<span id="newProgressText" class="progress-text">0%</span>
</div>
<input type="text" id="newCaptionInput"
placeholder="사진 설명 (선택)"
class="form-control form-control-sm mb-2">
<button type="button" class="btn btn-primary btn-sm w-100" id="btnSubmitNew">업로드</button>
<button type="button" class="btn btn-outline-secondary btn-sm w-100 mt-1" id="btnCancelNew">취소</button>
<div class="upload-feedback" id="newFeedback"></div>
</div>
{% else %}
<div class="img-placeholder">
<span class="icon">🏢</span>
<span>등록된 사진 없음</span>
</div>
{% endif %}
{% endif %}
</div>
<div class="header-right">
<div class="header-top">
<span class="broker-name">{{ agent.bsnm_cmpnm }}</span>
{% if agent.sttus_se_code == "1" %}
<span class="status-badge open">● 영업중</span>
{% else %}
<span class="status-badge closed">폐업</span>
{% endif %}
</div>
<div class="info-grid">
<div class="info-item">
<div class="lbl">등록번호</div>
<div class="val">{{ agent.jurirno|default:"-" }}</div>
</div>
<div class="info-item">
<div class="lbl">대표자</div>
<div class="val">{{ agent.brkr_nm|default:"-" }}</div>
</div>
<div class="info-item">
<div class="lbl">시군구</div>
<div class="val">{{ agent.ld_code_nm|default:"-" }}</div>
</div>
<hr class="info-divider">
<div class="info-item full-width">
<div class="lbl">도로명주소</div>
<div class="val">{{ agent.rdnmadr|default:"-" }}</div>
</div>
<div class="info-item full-width">
<div class="lbl">지번주소</div>
<div class="val">{{ agent.mnnmadr|default:"-" }}</div>
</div>
<hr class="info-divider">
<div class="info-item">
<div class="lbl">등록일</div>
<div class="val">{{ agent.regist_de|default:"-" }}</div>
</div>
<div class="info-item">
<div class="lbl">영업 시작일</div>
<div class="val">{{ agent.estbs_begin_de|default:"-" }}</div>
</div>
<div class="info-item">
<div class="lbl">영업 종료일</div>
<div class="val">{{ agent.estbs_end_de|default:"-" }}</div>
</div>
</div>
</div>
{% if user.is_authenticated %}
✏️ 후기 작성하기
{% else %}
🔒 로그인 후 후기 작성 가능
{% endif %}
{{ review.content }}
{% if review.author == request.user %}아직 등록된 후기가 없습니다
첫 번째 후기를 작성해보세요!
{% block extra_js %}
{% endblock %}
broker_detail.html에서 {% static 'js/brokers/broker_detail.js' %} 를 사용하고 있는데, 맨 위에 {% load static %} 가 선언되지 않으면 Django 템플릿 엔진이 static 태그를 인식하지 못해서 TemplateSyntaxError가 발생합니다.
현재 파일 상단은 이렇게 시작합니다:
{% extends "base.html" %}
여기에 바로 아래 줄로 추가해야 합니다:
{% extends "base.html" %}
{% load static %}
즉 최종 수정:
{% extends "base.html" %}
{% load static %}
{% block title %}{{ agent.bsnm_cmpnm }} - 상세정보{% endblock %}
발생하는 대표 에러 메시지는 보통 아래 형태입니다:
TemplateSyntaxError: Invalid block tag on line XX: 'static'
원인:
{% static %} 사용{% load static %} 없음추가로 이 파일에서는 아래 부분 때문에 반드시 필요합니다:
<script src="{% static 'js/brokers/broker_detail.js' %}"></script>
따라서 핵심 원인은 정확히:
statictemplate tag 미로드 ({% load static %}누락) 입니다.