• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

해결되지 않은 템플릿 참조오류가 뜹니다

22.10.23 16:57 작성 조회수 728

0

Common

common.png

wsgi & asgi

wsgi & asgi.png

urls.py

urls.py.png

layout.html

layout.png

root.html

root.png

웹 페이지

웹페이지.png파이참 django 프로젝트내에서 왜인지 모르게 static파일이랑 templates 경로를 인식하지 못하는거 같습니다.

그런데 runserver로해서 구동했을경우에는 정상적으로 적용이돼서 나오네요.

 

settings

settings.png

다만 settings 파일을 원래경로에 다시 만들고 BASE_DIR = dirname(dirname(abspath(__file__)))으로 dirname을 한단계 내리게되면 참조 오류가 해결이됩니다. 왜 이러는걸까요?

 

답변 1

답변을 작성해보세요.

0

안녕하세요.

말씀하신 대로 마지막에 답이 있네요.

BASE_DIR 설정에 따라 찾지못하는 템플릿/static 파일이군요. 그 파일들은 BASE_DIR 설정을 통해 템플릿 경로, static 경로를 계산하는 파일들이구요.

settings 파일에 보시면, TEMPLATES내 DIRS 설정을 통해 지정하는 경로에 root.html 파일이 있을 것이구요. STATICFILES_DIRS를 통해 지정하는 경로에 오류의 static 파일이 있었을 것입니다. 두 설정 모두 BASE_DIR 값을 사용하고 있죠.

BASE_DIR 값은 manage.py 파일이 있는 디렉토리의 경로를 지정해야만 합니다. 일반적으로 settings 파일로부터 부모/부모를 찾아가며 경로를 지정하는 데, settings 파일의 깊이가 한 단계 깊어졌다면 BASE_DIR 계산시에도 dirname 을 한 번 더 써주어 부모를 한 단계 위에서 찾아가도록 해야만 합니다.

차근차근 정리해보시고 또 질문 남겨주세요.

화이팅입니다. :-)

yezi9733님의 프로필

yezi9733

질문자

2022.10.24

넵 그래서 첫번째 Common 이미지에서처럼 dirname을 한번 더 써주었는데도 저렇게 참조오류가 뜨더라고요

제목 없음.png제목 없음2.png

settings.py파일을 settings폴더에 common.py이름으로 옮겨서 BASE_DIR값에 dirname을 한번 더 써주었는데도 참조가 안되네요... ㅜ

BASE_DIR 값과 STATICFILES_DIRS 설정, TEMPLATES의 DIRS 설정등이 각 템플릿/static 파일이 저장된 경로로 올바르게 지정하셨는 지 확인을 먼저 하셔야 합니다.

장고 쉘을 구동하셔서 python mange.py shell 명령, 장고 settings를 임포트 하신 후에, from django.conf import settings
settings.BASE_DIR 등의 값을 확인해보세요.

참조가 될 때가 있고, 안 될 때가 있으니, 될 때에는 어떤 설정값을 가지고 안 될 때는 어떤 설정값을 가지는 지 확인을 하시면, 에러를 올바르게 이해하실 수 있습니다.

어쩌다보니 에러가 사라졌다. 가 아니라, 내가 이런 이런 값으로 설정을 올바르게 했음을 확신할 수 있어야, 실력이 향상이 됩니다.

설정이 모두 올바른 데, 희소한 확률도 툴에서 제대로 인지를 못할 때도 있습니다. 그럴 때는 대개 개발툴을 재시작시켜주거나, 개발툴의 캐시 초기화 명령을 수행해보기도 합니다. 그런데 이 경우는 그 케이스는 아닌 듯 하네요.

차근차근 코드를 확인하시며 정리하시는 것이, 에러를 해결하는 가장 빠른 방법입니다.

정리해보시고, 각 파일들의 경로와 각 설정들이 어떻게 되는 지 알려주시겠어요?

yezi9733님의 프로필

yezi9733

질문자

2022.10.25

image

네 알려주신 명령어대로 하니깐 경로가 이렇게 나옵니다!!

 

BASE_DIR 뿐만 아니라, STATICFILES_DIRS 및 TEMPLATES 설정값도 확인해보시고,

STATICFILES_DIRS와 TEMPLATES에 지정한 폴더의 실제 경로도 확인해보시고,

윈도우탐색기를 통해 STATICFILES_DIRS와 TEMPLATES에 지정한 폴더 내에 저장한 root.html 및 static 파일의 실제경로도 확인해보시겠어요?

yezi9733님의 프로필

yezi9733

질문자

2022.10.26

image


image

image


image



image네 말씀하신대로 경로들을 전부 불러와봤습니다 아직도 참조를 못하네요 ㅜ

웹브라우저를 통해 장고 웹서버에 접속했을 때 static/template 파일은 로딩이 되고 있나요?

장고 웹서버에서는 처리가 되는 데, 파이참에서 밑줄이 뜨는 경고가 뜨신 다는 것인가요?

장고 웹서버에서의 처리와 파이참에서의 처리는 서로 다릅니다. 파이참은 장고와는 별개로 파이참 나름의 추론을 할 뿐인거죠.

그러니 위에서 알려드린 대로 각 설정을 하시면 장고에서의 처리는 잘 되셔야 합니다.

그리고 각 장고앱이 아닌 별도 경로에 생성하신 static 파일과 templates 경로에 대해 파이참에서 자동완성이 잘 안된다면, 수동으로 찾아올 경로를 지정해주실 수 있습니다.

askcompany/templates 폴더의 경우 파이참에서 해당 폴더를 우클릭 후에 "Mark Directory as" 메뉴에서 "Template Folder"를 지정해주시고, askcompany/static 폴더의 경우 "Sources Root" 로 지정하신 후에, 파이참을 껐다가 재시작해주시면, 파이참에서 수동으로 지정하신 경로를 참조하시게 됩니다.

yezi9733님의 프로필

yezi9733

질문자

2022.10.26

imageimage

image

image

네 말씀하신대로 장고 웹서버에서 처리가 되는데 파이참에서 밑줄 경고가 뜹니다!

templates는 Template Folder로, static폴더는 Sources Root로 지정해주었는데 urls의 root.html 참조오류는 해결되었지만 html에서 static으로 부트스트랩을 불러올때에는 밑줄로 참조오류가 떠버리네요 ㅜㅜ

 

 

File > Invalidate Caches / Restart... 메뉴를 통해 모든 캐싱 내역을 초기화해보시면 어떨까요?

yezi9733님의 프로필

yezi9733

질문자

2022.10.27

네 여전히 안되네요 ㅜㅜㅜ 머가 문제인지 알고싶은데 알기가 넘힘드네요 파이참문제인건 확실한거같습니다.

yezi9733님의 프로필

yezi9733

질문자

2022.10.29

imageimagebootstrap5 라이브러리 또한 안불러와집니다 그런데 웹사이트에서는 적용은되네요 저만 그런건지 파이참문제인건지 settings 분리할때에만 참조오류가 뜹니다 프로젝트 첨부터 만들어봐도 똑같네요

아. 그런 부분이라면

파이참의 프로젝트 설정에서 Django 설정에서 django support 활성화 항목이 있습니다.

여기에 settings 경로 지정항목이 있으니, 여기를 확인해보시고 맞게 변경해보시겠어요?

yezi9733님의 프로필

yezi9733

질문자

2022.10.30

바로해결되었네요 정말 감사합니다!! 강의도 필요한 내용들 자세하게 설명해주시고 질문글에 답변도 계속달아주셔서 모르는 문제도 해결할 수 있었네요 강의 구매를 참 잘한거같습니다. 오류해결 답변해주시느라 고생하셨어요 언제나 좋은하루되세요!

고생많으셨습니다.

화이팅입니다. 👍