簡體   English   中英

如何使用多個域並掩蓋Django項目

[英]how to use multiple domains and mask a django project

我有在特定域example.com上配置的Django網站。 現在,我計划在必須使用其語言的不同國家/地區使用同一網站。 例如中國,我打算創建一個子域chinese.example.com ,它將指向完全相同的example.com項目,但語言將切換為中文。 此外,我想屏蔽此chinese.example.com與另一個域的子域chinaexample.com 請告知如何使用Apache和Django完成此操作。

第一步-確保在django配置中將所有域都添加到“ 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設置,該設置應該是包含域作為鍵的字典以及分配給該域的語言作為值的字典。

使用該解決方案,所有域或子域都可以使用一個settings.py文件指向一個django實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM