Пути Django, разрабатывающие в окнах, развертывающихся на Linux

Я разрабатываю приложения Django на своей локальной машине окон, затем развертывающейся к размещенному серверу Linux. Формат для путей отличается между двумя и вручную заменяющий, прежде чем развертывание использует больше времени, чем это должно. Я мог кодировать на основе переменной в моем файле настроек и если операторы, но я задавался вопросом, были ли у любого лучшие практики для этого сценария.

7
задан marr75 1 March 2010 в 21:27
поделиться

4 ответа

В книге Django предлагается использовать os.path.join (и использовать слеши вместо обратных слешей в Windows):

import os.path

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)

Я думаю, это лучшее решение, так как вы можете легко создавать относительные пути подобным образом. Если у вас несколько относительных путей, вспомогательная функция сократит код:

def fromRelativePath(*relativeComponents):
    return os.path.join(os.path.dirname(__file__), *relativeComponents).replace("\\","/")

Если вам нужны абсолютные пути, вы должны использовать переменную окружения (с os.environ["MY_APP_PATH"]) в сочетании с os.path.join.

4
ответ дан 7 December 2019 в 07:44
поделиться

У нас ситуация очень похожая на вашу, и мы использовали разные пути в настройках, основываясь на sys.platform . Примерно так:

import os, sys
DEVELOPMENT_MODE = sys.platform == 'win32'
if DEVELOPMENT_MODE:
    HOME_DIR = 'c:\\django-root\\'
else:
    HOME_DIR = '/home/django-root/'

Работает вполне ОК - предполагается, что вся разработка ведется в Windows.

2
ответ дан 7 December 2019 в 07:44
поделиться

Добавьте

import os.path

BASE_PATH = os.path.dirname(__file__)

в начало файла настроек, а затем используйте BASE_PATH везде, где вы хотите использовать путь относительно вашего Проект Django.

Например:

MEDIA_ROOT = os.path.join(BASE_PATH, 'media')

(Вам нужно использовать os.path.join () вместо того, чтобы просто писать что-то вроде MEDIA_ROOT = BASE_PATH + '/ media' , потому что Unix объединяет каталоги с помощью '/' , в то время как Windows предпочитает '\')

1
ответ дан 7 December 2019 в 07:44
поделиться

в вашем settings.py добавьте следующие строки

import os.path

SETTINGS_PATH = os.path.abspath(os.path.dirname(__file__))  
head, tail = os.path.split(SETTINGS_PATH)

#add some directories to the path
import sys
sys.path.append(os.path.join(head, "apps"))
#do what you want with SETTINGS_PATH
0
ответ дан 7 December 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: