inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

장고가 static 파일을 다루는 방법

Static Files Finders 슬라이드 질문

375

빅재미코딩

작성한 질문수 24

0

이 슬라이드에서 형광색 부분(아래)이 문자 그대로 무슨말인지 모르겠습니다.

형광색부분 = "디렉토리 목록에서 지정 상대경로를 가지는 static 파일 찾기"

Q.

무슨말인지 모르겠는 부분 = 지정 상대경로를 가지는 static 파일


Appendix.

아래 [그림1] 는 제가 이해한 내용을 정리한 내용 입니다.

정리한 내용처럼 해당 내용을 전반적으로 이해했지만

위 질문의 "지정 상대경로를 가지는 static 파일" 이 정확히 무슨말인지 모르겠습니다.

 [그림1 Static Files Finders 동작방식 이해한 내용]

django

답변 3

1

빅재미코딩

넵 감사합니다. 왜이렇게 이 파트에서 개념이나 용어 동작방식이 이해가 더디는지 ..ㅎㅎ 몇번 더 확인해봐야겠네요

0

빅재미코딩

선생님, 가장 마지막에 말씀하신

장고 static loader 라는 용어/개념은

from django.conf.urls.static import static 를 임포트해서 사용하는 static 함수를 의미하는건가요?

0

이진석

아니요. django.conf.urls.static.static 은 개발서버에서 정적파일 서빙을 도와주는 view에 대한 path를 만들어주는 유틸리티일 뿐입니다.

관련 공식문서 : https://docs.djangoproject.com/en/4.2/howto/static-files/#serving-files-uploaded-by-a-user-during-development

0

이진석

안녕하세요.

blog 앱을 예로 들어보면, static 파일은 blog/static/blog/hello.jpg 와 같은 경로에 둡니다.

이 프로젝트가 c:/workspaces/askcompany/ 경로가 있다고 할 때
이 파일의 절대경로는 c:/workspaces/askcompany/blog/static/blog/hello.jpg 가 됩니다.
이러한 절대경로는 장고 개발 시에는 신경쓰지않습니다.

단지 "장고앱/static" 아래의 경로만 신경씁니다. 여기에서는 "blog/hello.jpg"가 되겠네요. 이 문자열이 그 파일에 대한 "상대경로"가 됩니다.

템플릿태그 static 에서도 <img src="{% static 'blog/hello.jpg' %}" /> 처럼 상대경로를 지정해주면
템플릿태그 static는 이 상대경로 문자열 앞에 settings.MEDIA_URL 문자열을 붙여 /static/blog/hello.jpg 문자열을 완성해줍니다. 그러면 <img src="/static/blog/hello.jpg" /> 와 같은 HTML 이 완성이 되겠죠.

그러면 브라우저가 해당 HTML 문자열을 읽어들인 후에, /static/blog/hello.jpg 경로의 이미지를 요청을 할 것이구요.
이 요청이 개발서버로 전달될 경우, 아래의 urlpatterns 설정에 따라 django/conf/urls/static의 static 에서 반환한 View에 의해서, 지정 URL의 static 파일을 찾아서 응답하려 시도합니다. /static/blog/hello.jpg 경로에서 settings.MEDIA_URL 문자열을 제외한 "blog/hello.jpg" 상대경로를 가지고 static의 app directories loader와 filesystem loader을 통해 파일 찾기를 시도합니다. 파일을 못찾으면 404 응답을 낼테고, 파일을 찾으면 해당 파일내용으로 응답하게 됩니다.

관련 소스코드 : https://github.com/askcompany-kr/django-with-react/blob/master/askcompany/urls.py#L38

image

static loader와 template loader는 설정상 유사한 부분이 많으니, 같이 살펴보시면 좋습니다.

영상과 함께 댓글을 살펴보시고, 또 질문 남겨주세요.

화이팅입니다. ;-)

안녕하세요.

0

49

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

274

1

useEffect 훅에서 else 유무에 따른 결과

0

211

1

useAxios 훅의 dependency array 설정

0

245

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

268

1

bootstrap4

0

471

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

364

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

574

3

useState는 필수일까요?

0

263

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

600

4

Django allauth를 사용한 소셜 로그인 시 에러

0

655

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

556

2

useLocalStorage() 함수 사용여부

0

229

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

449

1

리듀서의 의미 재확인

0

430

1

simple-jwt Refresh Token 사용 노하우

0

899

2

docker compose 를 통한 배포 관련 오류 문의

0

670

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

365

1

is_like_user

0

233

1

related_name 오류

0

275

1

re_path 오류

0

258

1

re_path url

0

251

1

No post matches the given query

0

661

2

sendgrid 메일 발송이 안됩니다 ㅠㅠ

0

892

3