Cách tôi giải quyết vấn đề này và tôi phải giải quyết vấn đề này trong hầu hết mọi dự án mà tôi đang làm, bằng cách sử dụng mẫu mà tôi đã chọn từ một người nào đó. Trong mẫu này - không chỉ có thể được sử dụng để giữ thông tin không bị kiểm soát phiên bản mà còn để tách biệt các cài đặt cụ thể cho môi trường/nền tảng - tệp cài đặt chính, nằm dưới sự kiểm soát phiên bản, hãy nhập tệp cài đặt thứ cấp được gọi là "local_settings". Tệp "local_settings" này không được đặt dưới sự kiểm soát phiên bản và cho mỗi nền tảng mà nguồn được triển khai, một tệp local_settings riêng biệt, cụ thể được tạo phù hợp với nền tảng đó.
Tôi sẽ cung cấp cho bạn một ví dụ về cách tôi thường làm điều này cho các dự án Django/Python của mình. Có một tệp trung tâm, mỗi dự án settings.py
, dưới sự kiểm soát phiên bản và nền tảng (có lẽ nền tảng không phải là thuật ngữ phù hợp để sử dụng tại đây) tệp local_settings.py
cụ thể. Các tập tin local_settings.py
được nhập khẩu từ bên trong settings.py
tập tin, nơi các biến môi trường khác được quy định trong các cách sau đây:
import local_settings
DATABASE_USER = local_settings.db_user
DATABASE_PASSWORD = local_settings.db_pass
Và, như một ví dụ để đi cùng với đoạn mã trên, các tập tin local_settings.py
được định nghĩa như sau:
db_user = 'user'
db_pass = 'pass'
Tôi đã tìm thấy mẫu này khi xử lý vấn đề được đề cập để hoạt động thực sự tốt.
Điều này có vẻ giống như một kỹ thuật khá đẹp, tôi sẽ bắt đầu sử dụng nó. Bạn có nhớ cung cấp ví dụ về mã nguồn 'local_settings.py' không? –
ở dưới cùng của settings.py Django của bạn trong kiểm soát nguồn bạn làm điều này: thử: từ settings_local nhập khẩu * ngoại trừ ImportError: vượt qua –
Hey Spike. Tôi nghĩ rằng trong trường hợp tệp 'local_settings.py' bị thiếu, thường là một ý tưởng hay để cho ngoại lệ gây ra do nhập một tệp/bong bóng mô-đun bị thiếu để người thiết lập dự án biết chính xác những gì đang xảy ra. – ayaz