해결된 질문
작성
·
418
1
강사님!
TemplateSyntaxError at /instagram/new/
Invalid block tag on line 34: 'endblock',
expected 'elif', 'else' or 'endif'.
Did you forget to register or load this tag?
이런 에러가 떴습니다.
메세지를 보아하니 유효하지 않은 태그가 34번에 있는데 그 이름이 endblock이고
심플하게는 태그 잘썼냐? 이런걸로 해석이 되는데요.
{% extends 'gram/layout.html' %}
{% load bootstrap5 %}
{% block content %}
<!-- 파일도 전송할 경우에는 반드시 enctype="multipart/form-data"를 해줘야 한다. -->
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form form %}%
<!-- form을 써줄때는 반드시 table로 감싸줘야 생김새가 깨져보이지 않고 정돈되어 나온다. -->
<!-- 두번째 방법으로는 form.as_table을 해주면 된다. -->
{% comment %} <table>
{{ form }}
</table> {% endcomment %}
{% buttons %}
{% comment %} <input type="submit" value="저장"> {% endcomment %}
<button class="btn btn-success">
저장
</button>
{% endbuttons %}
<!-- 여기를 통해서 전달받게 되는 데이터는 request.POST의 형식으로 전달이 된다. 따라서 이것과 관련된
로직을 구현해야하며, 추가로 파일저장이 있을 경우에는 request.FILES도 추가적으로 정의해주어야 한다. -->
</form>
<hr>
<!-- NoReverseMatch에러의 요소였어서, 각 인자에 post를 추가해 주었고 이건 주석처리 해준다. -->
<!-- {% if form.instance %} -->
{% if post %}
<a href="{{ post.get_absolute_url }}" class="btn btn-success">
내용으로
</a>
{% endif %}
<a href="{% url 'gram:post_list' %}" class="btn btn-success">목록</a>
{% endblock content %}
에러가 발생한 페이지를 보면 짝을 이루는 태그가
block -> block, endblock 각 한개씩 있음
buttons -> buttons, endbuttons 각 한개씩 있음
if -> if, endif 각 한개씩 있음.
뭐가 문제인걸까요? ㅠㅜ
답변 1
1
안녕하세요.
if 블럭이 2개인데, endif 가 1개여서 발생하는 이슈입니다.
아래의 코드에서, if 블럭을 주석처리해서 if 블럭으로 동작하지 않는다고 생각하셨는 듯 한데요. 그렇지 않습니다.
<!-- {% if form.instance %} -->
<!-- --> 는 HTML에서의 주석 문법입니다. 장고 템플릿의 주석 문법이 아닙니다. 그렇기에 <!-- --> 는 장고 템플릿 입장에서는 단순 문자열일 뿐입니다. 그러니 위 if 블럭이 동작을 한 것입니다.
위 if 문이 장고 템플릿 엔진에서 렌더링 시에 무시토록 할려면, 장고 템플릿 주석 문법인 {# #} 를 쓰셔야 합니다. 그럼 {# {% if form.instance %} #} 가 됩니다.
{# #} 문법은 1줄 주석 문법이구요.
여러줄 주석은 comment 템플릿태그를 쓰셔야 합니다.
{% comment %}
이 사이에 쓰신 문자열은 장고 템플릿 엔진에 의해서 무시됩니다.
{% endcomment %}
이번 기회에 장고 템플릿 엔진에서의 주석과
웹프론트엔드 HTML, JS, CSS 에서의 주석의 차이에 대해서 곰곰히 생각해보시고 잘 정리해보세요.
또 질문 남겨주시구요.
화이팅입니다. ;-)
와..... 이걸 어떻게 알았을까 싶네요 진짜...
너무너무 감사드립니다!!!
아직은 아는듯 모르는게 더 많아서 활용을 못하고 있는데, 그래도 강사님 덕분에 하루에 몇가지씩 알아가고 있습니다. 너무 감사합니다!!