티스토리 뷰

반응형

문제점

views의 return에서 내가 반환하려는 html이 반환이 안된다.

url분리 후에 app 안에서 views를 설정했다. views는 아래와 같다.


def indes(request):

    return render(request, 'index.html')


위의 코드의 문제점은 무엇일까??

장고는 모듈로 관리를 하기 때문에 각각의 app의 templates 안의 html을 모두 하나로 모아서 인식을 한다. 따라서 위의 코드 처럼 하면, url를 정확히 했다 하더라도 다른 app의 index.html이 뜰 수도 있다.

장고의 탐색 순서는 INSTALLED_APPS에 등록한 순서로 찾고 바로 반환한다. 따라서 위쪽에 등록된 app에서 같은 이름의 html이 있다면 그걸 바로 반환한다.

 


html 중복의 해결책

폴더의 구조를 바꾸면 위의 문제를 해결 할 수 있다.

app이름이 boards이고 프로젝트의 이름이 crud라고 해보자.

crud/boards/templates/index.html 라는 구조를 app이름을 한번 더 추가하는 형식으로 crud/boards/templates/boards/index.html와 같이 바꿔준다.

 

그리고 return부분을 return render(request, 'index.html')에서 return render(request, 'boards/index.html')으로 바꿔준다.

 


한줄 정리

django는 가상공간에 templates를 모아 놓고 사용한다.

그리고 이 때 탐색순서는 INSTALLED_APPS에 등록한 순서로 탐색을 한다. 따라서, templates 안에 app 이름으로 폴더를 만들어서 효율적으로 관리를 한다.

 

 

 


앞에서 배운내용 복습

base.html을 각각의 app에서 다 활용하고 싶다면, 

1. crud/templates/base.html 로 구조를 만들자.

2. settings의 templates에 DIRS를 추가하자.

3. 각각의 app 에서 base.html을 불러 올 수 있도록

{% extends 'base.html' %}

{% block body %}

{% endblock %}

를 추가한다.

반응형

'Web > Django' 카테고리의 다른 글

[django] Form으로 사용자의 입력 받기+ModelForm  (0) 2020.06.22
[Django] CRUD_READ_상세보기(detail)  (0) 2020.06.21
[Django]코딩을 위한 잡다한 추가 팁  (0) 2020.06.18
[Django] 참고 사이트  (0) 2020.06.16
[Django]urls 분리  (0) 2020.06.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함