2010-12-30 24 views
13

Tôi vừa bắt đầu một nghiên cứu khả thi về Django cho công ty của tôi và tôi đã nhận thấy sự cần thiết của đường dẫn tuyệt đối trên settings.py:Django - Làm thế nào để đối phó với những con đường ở settings.py vào các dự án hợp tác

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
) 

Câu hỏi của tôi là: Làm cách nào để đối phó với các đường dẫn tuyệt đối này khi bạn cộng tác với một nhóm? Nói rằng, nếu một thành viên trong nhóm phải sửa đổi các đường dẫn sau khi nhận dự án từ điều khiển nguồn, điều này sẽ không dễ xảy ra và lãng phí thời gian nhưng nó cũng sẽ gây ra các biến chứng khi người dùng này phải thực hiện thay đổi đối với settings.py. Làm thế nào tôi có thể tránh điều này?

Trả lời

27
import os.path 

#Get the absolute path of the settings.py file's directory 
PWD = os.path.dirname(os.path.realpath(__file__)) 

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or 
    # "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 

    #Add Templates to the absolute directory 
    os.path.join(PWD, "Templates") 
) 

Đó là cách tôi làm hàng nhập khẩu tương đối. Lưu ý rằng thường là khôn ngoan để có một tập tin localsettings.py riêng biệt, hoặc một cái gì đó tương tự.

+0

Tại sao mặc định 'PWD = os.path.dirname (os.path.dirname (__ file __))'? Bất kỳ sự khác biệt? – User

+0

Lưu ý rằng trên Windows phương pháp này sẽ tạo các đường dẫn có dấu gạch chéo ngược, ngược lại với tài liệu Django (ví dụ: [https://docs.djangoproject.com/en/1.7/ref/settings/](https://docs .djangoproject.com/vi/1.7/ref/settings/# name) và các chú thích trong đoạn trên). – dhobbs

2

settings.py chỉ là một mô-đun Python khác. Nhập và sử dụng các chức năng khác nhau trong os.path để tạo đường dẫn của bạn.

3

Làm điều này:

import os 
ROOT_PATH = os.path.dirname(__file__) 
. 
. 
. 
TEMPLATE_DIRS = (
    os.path.join(ROOT_PATH, 'templates'), 
) 

này sẽ thiết lập đường dẫn theo thư mục của tập tin settings.py

1

Cách thay thế cho việc sử dụng đường dẫn tương đối từ tệp settings.py, là dành cho mỗi nhà phát triển có settings.py của riêng mình.

# settings.py 
TEMPLATE_DIRS = (
    'c:\django\templates\', 
) 

# dev-x-settings.py 
import settings 
TEMPLATE_DIRS = (
    'd:\dev\django\project\templates\' 
) 

Dev-x-settings.py nhập tất cả các cài đặt từ tệp cơ sở và thay đổi các bit và phần chúng cần. Cũng rất tiện dụng cho việc duy trì một cơ sở dữ liệu sqlite cục bộ và tương tự.

Chúng tôi thường đặt ra các thiết lập của chúng tôi như:

/settings/ 
    __init__.py 
    production.py 
    staging.py 
    test.py 
    dev-x.py 
    dev-y.py 

Sau đó, tất cả các bạn cần phải lo lắng về việc đang chạy máy chủ và đi qua nó file settings.py đúng.

1

Ngoài việc sử dụng os.path bạn có thể thêm

try: 
    import * from settings_local 
except: 
    pass 

ở phần cuối của bạn settings.py. Mỗi nhà phát triển có thể tạo tệp settings_local.py của riêng mình mà không được đăng ký vào VCS!

Các vấn đề liên quan