Django管理员中的唯一属性

时间:2011-06-07 16:57:58

标签: django django-models django-admin

我正在构建一个将为多个站点部署的通用模板,我们想要允许的其中一个自定义选项是标题文本的自定义字体。我想将此属性添加到管理界面。 是否有更好的技术,然后为这些属性创建模型,并执行Model.objects.get()来检索1个实例。

提前致谢

2 个答案:

答案 0 :(得分:0)

我建议使用上下文处理器,只在第一次请求时点击数据库,或者强行触发重新加载设置。例如:

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并返回用于填充RequestContext的字典。

答案 1 :(得分:0)

我目前已经从github实施了django-chunks 它允许使用

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

其中块是键,值设置。

我用这种技术插入“动态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>