Поскольку вы хотите получить значение из конфигурации Apache, я думаю, единственное, что вы можете сделать, это прочитать файл и обработать его.
Примерно так (если ваш файл settings.py находится в том же каталоге, что и wsgi.conf):
try:
f = open('wsgi.conf', 'r')
LOGIN_URL=[line for line in f.readlines() if 'WSGIScriptAlias' in line][0].split()[1]
finally:
f.close()
Поймать исключение, если файла нет, также может быть хорошей идеей.
Редактировать после вашего комментария: Ах, я вижу, что вы пытаетесь сделать. Этот поток может помочь понять, почему использование os.environ
не будет работать. Альтернатива, которую они представляют, не поможет вам:
В двух словах, apache SetEnv не устанавливает значения в процессе
среда, которую представляет os.environ. Вместо этого SetEnv устанавливает
значения в контексте запроса WSGI.
В вашем коде вы можете ссылаться на этот контекст в request.environ:
def myView(request):
tier = request.environ['TIER']
Это снова я. Из-за того, что делает SetEnv в Apache, я не думаю, что у вас будет доступ к переменной в settings.py. Кажется, синтаксический анализ файла - единственный вариант.
Дальнейшее редактирование: Другая альтернатива - можете ли вы основать свое решение на имени хоста?
#settings.py
import socket
production_servers = { 'server1.com': '/trunk...',
'server2.com': '/trunk_2...' }
LOGIN_URL=production_servers[ socket.gethostname() ]
Это полностью исключает информацию, содержащуюся в конфигурации apache.