Tôi đang sử dụng mô-đun os để có đường dẫn tương đối trong các dự án Django của tôi settings.py
tệp. Biến SITE_ROOT được đặt thành thư mục làm việc hiện tại của tệp settings.py
và sau đó được sử dụng để tham chiếu tất cả các thư mục static/media
cũng nằm trong cùng thư mục đó.os.getcwd() vs os.path.abspath (os.path.dirname (__ file__))
Heres vấn đề của tôi:
print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))
Trong settings.py, các báo cáo trên đều có kết quả đầu ra giống hệt nhau. nhưng mẫu của tôi sẽ chỉ tải nếu tôi sử dụng SITE_ROOT = os.path.abspath(os.path.dirname(__file__))
Django tìm kiếm các mẫu ở đây:
TEMPLATE_DIRS = (
os.path.join(SITE_ROOT, 'templates'),
)
SITE_ROOT thiết lập để os.getcwd()
dường như làm cho Django tìm kiếm thư mục templates trong thư mục TRÊN file settings.py
Tôi có thể dễ dàng không sử dụng os.getcwd()
và trang web của tôi chạy tốt, nhưng tôi tò mò điều gì có thể xảy ra ở đây :)
Có ai biết không?
Thư mục làm việc hiện tại và '__file__' không liên quan. Việc đầu tiên có thể thay đổi, tùy thuộc vào nơi bạn chạy chương trình của bạn từ và cho dù bạn sử dụng 'os.chdir' bên trong, khác chỉ phụ thuộc vào nơi mà các mô-đun được đặt trong hệ thống tập tin. –