Sự khác biệt giữa `from django.conf import settings` và ʻimport settings` trong dự án Django


92

Tôi đang đọc rằng hầu hết mọi người đều làm from django.conf import settingsnhưng tôi không nhận ra sự khác biệt khi chỉ đơn giản làm import settingstrong một tệp dự án django. Bất cứ ai có thể giải thích sự khác biệt?


Cài đặt django.conf là cài đặt mặc định hoặc "chung" của django mà bạn có thể ghi đè bằng cài đặt dựa trên dự án của riêng mình.
Jingo

7
KHÔNG BAO GIỜ sử dụng hình thức thứ hai. Cái đầu tiên là cái đúng duy nhất.
bruno desthuilliers

2
Nhưng tại sao không bao giờ sử dụng cái thứ hai?
tzenderman

1
có thể trùng lặp Tệp Cài đặt Nhập Django
Anto

Câu trả lời:


111

import settingssẽ nhập mô-đun python đầu tiên có tên settings.pyđược tìm thấy trong sys.path, thường là (trong thiết lập django mặc định). Nó chỉ cho phép truy cập vào tệp cài đặt do trang web của bạn xác định, tệp này sẽ ghi đè cài đặt mặc định django ( django.conf.global_settings).

Vì vậy, nếu bạn cố gắng truy cập một cài đặt django hợp lệ không được chỉ định trong tệp cài đặt của bạn, bạn sẽ gặp lỗi.

django.conf.settingskhông phải là một tệp mà là một lớp tạo ra sự trừu tượng của các khái niệm, cài đặt mặc định và cài đặt dành riêng cho trang web của bạn. Django cũng thực hiện các kiểm tra khác khi bạn sử dụng from django.conf import settings.

Bạn cũng có thể tìm thấy nó trong tài liệu django .

Hi vọng điêu nay co ich.


5
import settingssẽ nhập mô-đun python đầu tiên có tên settings.pyđược tìm thấy trong sys.path. Đây có thể không phải là "tệp cài đặt do trang web xác định", được tra cứu trong biến môi trường "DJANGO_SETTINGS_MODULE" và có thể chỉ là bất kỳ gói hoặc mô-đun python nào.
bruno desthuilliers

@brunodesthuilliers cảm ơn bạn. Tôi cập nhật câu trả lời của mình khi biết về sự sửa chữa của bạn.
juliocesar 14/1113

22

from django.conf import settings là lựa chọn tốt hơn.

Tôi sử dụng các tệp cài đặt khác nhau cho cùng một dự án django (một tệp cho "trực tiếp", một cho "dev"), tệp đầu tiên sẽ chọn tệp đang được thực thi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.