Django站点的白色标签的常见做法是什么?
我有一个web应用程序,我想允许我们的客户使用白色标签。我在PHP/ZendFramework中完成了这项工作,键入主机名(),从数据库中提取logo/colors/other,并使用这些设置呈现主布局 我是Python/Django1.5新手,想知道是否有人在他们的应用程序中实现了白标签功能。你是怎么做到的?有共同的做法吗 我在谷歌上搜索了一下,发现一个老博客使用url前缀实现了一个白标签功能,但我仍然在呈现布局时遇到了一些问题Django站点的白色标签的常见做法是什么?,django,python-2.7,django-templates,django-urls,white-labelling,Django,Python 2.7,Django Templates,Django Urls,White Labelling,我有一个web应用程序,我想允许我们的客户使用白色标签。我在PHP/ZendFramework中完成了这项工作,键入主机名(),从数据库中提取logo/colors/other,并使用这些设置呈现主布局 我是Python/Django1.5新手,想知道是否有人在他们的应用程序中实现了白标签功能。你是怎么做到的?有共同的做法吗 我在谷歌上搜索了一下,发现一个老博客使用url前缀实现了一个白标签功能,但我仍然在呈现布局时遇到了一些问题 任何帮助都会很好!谢谢我没有找到一个很好的答案,所以我只实施了
任何帮助都会很好!谢谢我没有找到一个很好的答案,所以我只实施了我自己的解决方案 我所做的是创建了一个如下所示的
白标签模型:
class Whitelabel(models.Model):
name = models.CharField(max_length=255, null=False)
logo = models.CharField(max_length=255, null=True, blank=True)
primary_domain = models.CharField(max_length=256, null=False)
然后,我在application\u name/context\u processors.py
中创建了一个上下文处理器,用于检查当前主机域,并查看它是否匹配任何记录primary\u domain
字段。如果存在匹配项,则返回name
和logo
的值,并将其分配给参数SITE\u name
和SITE\u logo
。如果未找到匹配项,请为站点名称
和站点徽标
分配定义值,这可能是您的默认应用程序名称
def whitelabel_processor(request):
current_domain = request.get_host()
whitelabel = Whitelabel.objects.filter(primary_domain=current_domain).order_by('id')
if whitelabel.count() != 0:
config = {
'SITE_NAME': whitelabel[0].name,
'SITE_LOGO': whitelabel[0].logo,
'SITE_DOMAIN': whitelabel[0].primary_domain
}
else:
config = {
'SITE_NAME': 'MY SITE',
'SITE_LOGO': '/static/images/logo.png',
'SITE_DOMAIN': 'http://%s' % Site.objects.get_current().domain
}
return config
然后,我将上下文处理器添加到我的设置文件中的TEMPLATE\u context\u PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
...
"context_processors.whitelabel_processor",
)
这样我就可以在base.html
模板中这样调用它们
<body>
<h1>{{SITE_NAME}}</h1>
<img src="{{SITE_LOGO}}" />
</body>
{{SITE_NAME}}
下面是关于模板上下文处理器的更多文档。
基本上我也在做同样的事情。你有没有想过?如果是这样的话,你能把你的解决方案作为答案发布吗?我已经提交了我的答案,希望它对你有帮助。谢谢你的回答。我真的很感激,它证实了我所想的一些事情。如果有更好的方法,我希望有人能把它贴出来,等等。但是,现在,我想我会采用你的解决方案再次感谢。没问题,我希望一切顺利!