我沒有找到一個好的答案,所以我只是實現了我自己的解決方案。
我所做的就是創建一個Whitelabel
模型是這樣的:
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_name/context_processors.py
,檢查當前的主機域名,如果它的任何記錄primary_domain
場比賽看到創建的背景處理器。如果匹配,則返回name
和logo
的值,並將它們分配給參數SITE_NAME
和SITE_LOGO
。如果找不到匹配項,請爲SITE_NAME
和SITE_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_CONTEXT_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>
以下是圍繞模板上下文的更多文檔ocessors。 https://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors
我想基本上做同樣的事情。你有沒有發現它?如果是這樣,你可以發佈你的解決方案作爲答案? –
我已經提交了我的答案,我希望它對你有幫助。 –
感謝您的回答。我真的很感激它,它證實了我在想的一些事情。如果有更好的方法,我會喜歡有人發佈它等,但現在,我認爲我正在與您的解決方案。 :) 再次感謝。 –