Как установить некоторые настройки Django, доступные штатом?

"использование" может также использоваться для разрешения конфликтов пространства имен. См. http://www.davidarno.org/c-howtos/aliases-overcoming-name-conflicts/ для короткого учебного руководства, которое я записал на предмете.

9
задан Apreche 2 December 2009 в 15:57
поделиться

4 ответа

Что-то вроде dbsettings (как вы упомянули) кажется подходящим вариантом. Из причин существования этого проекта:

Не все настройки входят в settings.py , поскольку в нем есть особые ограничения:

  • Настройки относятся к проекту. Это не только требует, чтобы приложения были загромождены settings.py , но также увеличивает шансы именования конфликты.

  • Настройки постоянны во всем экземпляре Django. Они не могут быть изменяется без перезапуска приложения.

  • Для изменения настроек требуется программист. Это правда даже если параметр не имеет функционального влияния ни на что другое.

Если dbsettings не работает для вас, реализуйте свою собственную или создайте вилку. Не похоже, что это будет слишком сложно.

6
ответ дан 4 December 2019 в 15:21
поделиться

Я на самом деле большой поклонник dbsettings, и не теряю желания опубликовать свой форк, который исправляет его для работы с Django 1.1 (не на самом деле большое изменение) . Похоже, кто-то уже обновил его .

Однако вы, вероятно, правы в том, что это слишком много для того, что вам нужно. Одно я Перед этим мы добавили строку в конец settings.py, которая импортирует и анализирует файл YAML. YAML - это простой язык разметки, который по своей сути представляет собой просто KEY: VALUE ...

CONSTANT1: MyValue
CONSTANT2: Anothervalue

Если вы поместите его туда, где редакторы могут получить к нему доступ, то в конце settings.py вы просто сделаете :

import yaml
try:
    globals().update(yaml.load(open('/path/to/my/yaml/file.yml')))
except:
    pass

Вам понадобится библиотека Python YAML для анализа файла YML.

Обратной стороной этого подхода является то, что вам нужно будет перезапустить Apache, чтобы он принял изменения.

Отредактировано, чтобы добавить Не было бы особенно сложно создать интерфейс, который мог бы редактировать этот файл и предоставить кнопку, запускающую сценарий для перезапуска Apache.

6
ответ дан 4 December 2019 в 15:21
поделиться

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

Похоже, что можно повторно установить значения в кеше с помощью API низкоуровневого кеширования Django . Все, что вы хотите, должно быть достигнуто с помощью этих вызовов:

 cache.set('settings', local_settings)
 cache.add('settings', local_settings)
 local_settings = cache.get('settings')
 cache.delete('settings')
1
ответ дан 4 December 2019 в 15:21
поделиться

Как насчет того, чтобы поместить sitesettings.py (или что-то еще) где-нибудь, к которому ваши администраторы могут получить доступ, а затем в settings.py сделать

from sitesettings import *

Это кажется хорошим и простым, но я, возможно, неправильно понял или упростил ваша проблема :)

0
ответ дан 4 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

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