본문 바로가기
개발일지/Django

Django - TypeError: expected str, bytes or os.PathLike object, not list

by 개발에정착하고싶다 2023. 1. 16.
320x100
posixpath.py", line 375, in abspath
    path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not list

이런에러가 계속해서 떴다.

앞 부분은 어차피 개인적인 경로라 생략되었지만,

구글링을 해보니 해답은 간단했다.

 

settings.py에 설정해준

STATIC_ROOT, STATICFILE_DIRS의 경로가 같으면 충돌때문에 이렇게 된다고 한다.

심지어는 내 눈에는 같은경로가 아닌 각각 'static', 'staticfiles' 이렇게 되었던 것으로 기억하는데 이런 타입에러가 나오다니..

 

결과적으로

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

이렇게 해주니 해결은 되었다.

 

하지만 Django를 활용하는 사람으로써 저 5개 경로에 대한 부분은 짚고 넘어가야 할것같아서

더욱 알아보았다.

그리고 정리본을 올린다.

# 정적파일(css, JS등을 보관해주고 끌어와주기 위한 경로)
STATICFILES_DIRS
STATIC_URL
STATIC_ROOT

# 정적파일(이미지, 일반적인 업로드 파일들관련 경로)
MEDIA_URL
MEDIA_ROOT

결론적으로 어이없겠지만 명확한 설명이 없는것같다.;

 

아무튼 저기서 쓰이는 경로중 하나의 요인으로 인해서

html에서 {% static %}으로 끌어와서 사용할때 사용되는 경로지정을 할수있다는 것은 확실한데

 

최소한에 내 눈에는 몇개의 포스팅을 봐도

그말이 그말같이 보인다.

 

마치

"이건 과일가게에서 파는 빨간색 과일이예요"

"이건 과일가게에서 파는 조그하고 씨가있는 빨간색 딸기예요"

뭐 이런말만 반복하는것같다;

 

아무튼 시간을 두고 차차 알아봐야겠다

 

300x250