我有一个在特定域example.com
上配置的Django网站。现在我打算在不得不使用他们语言的国家/地区使用相同的网站。例如中国,我打算创建一个子域chinese.example.com
,它将指向完全相同的example.com
项目,但语言将切换为中文。另外,我想用另一个域chinese.example.com
屏蔽此chinaexample.com
子域。请告诉我们如何使用Apache& amp; Django的。
答案 0 :(得分:0)
第一步 - 确保将所有域添加到django config中的“ALLOWED_HOSTS”。
接下来 - 如果您将拥有仅适用于特定域的某些内容,则使用内置于django中的站点框架将非常方便。但是,如果您希望在多个域上使用一种语言并希望某些内容可用于语言,而不是域,则更好的解决方案可能是创建自己的方法来将内容分配给域(或语言)。
第三步 - 编写将检查您的域并激活分配给它的语言的中间件。示例中间件可能如下所示:
class DomainLanguageMiddleware:
def process_request(self, request):
try:
host = request.META['HTTP_HOST']
host_port = host.split(':')
if len(host_port) == 2:
host = host_port[0]
if host in settings.LANG_MAP:
request.LANG = settings.LANG_MAP[host]
translation.activate(request.LANG)
request.LANGUAGE_CODE = request.LANG
except KeyError:
pass
此代码使用LANG_MAP
设置,该设置应该是一个字典,其中包含域作为键和作为值分配给该域的语言。
使用该解决方案,所有域或子域都可以指向一个django实例,并带有一个settings.py文件。