Джанго Уникальные свойства в админке - PullRequest
0 голосов
/ 07 июня 2011

Я создаю общий шаблон, который будет развернут для нескольких сайтов, и одним из параметров настройки, который мы хотели бы разрешить, был бы собственный шрифт для текста заголовка.Я хотел бы добавить это свойство в интерфейс администратора.Есть ли лучший метод, чем создание модели для этих свойств и выполнение Model.objects.get () для извлечения 1 экземпляра.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

В настоящее время я реализовал django-chunks из github Это позволяет использовать

{% load chunks %}
{% chunk "key" %}

, где чанк является ключом, значение установлено.

IЯ использовал эту технику для вставки «динамического CSS» (мой администратор может предоставить CSS, необходимый для загрузки пользовательского шрифта)

Пример: subtitle_font_css

<style>
@font-face {
    font-family: "impact";
    src: url('/static/fonts/impact.ttf');
}
</style>

subtitle_font

font-family: impact;

Теперь для HTML:

<head>
    {% load chunks %}
    {% chunk "subtitle_font_css" %}
</head>
<body>
    {% load chunks %}
    <span style="{% chunk "subtitle_font %}"> Title </span>
</body>
0 голосов
/ 07 июня 2011

Я бы посоветовал использовать контекстный процессор и обращаться к базе данных только по первому запросу или если вы принудительно запускаете перезагрузку настроек. Например:

from project.theme.models import Theme

THEME_SETTINGS = Theme.objects.values().get(id=1) # hits db first request

def theme(request):
    if 'reset_theme' in request.GET: # or some other mechanism
        THEME_SETTINGS = Theme.objects.values().get(id=1) # reset theme settings
    return THEME_SETTINGS

Чтобы использовать, просто добавьте процессор контекста к TEMPLATE_CONTEXT_PROCESSORS в ваших настройках. Контекстные процессоры довольно просты, они берут RequestContext и возвращают dict, использованный для заполнения RequestContext.

...