我有一個Django應用程序,目前支持多種語言。我想添加子域支持,以便'de.mysite.com'用德語查詢文章,而'mysite.com'用英語查詢(默認語言)。將有大約20個子域指向相同的Django應用程序。如何捕獲Django URL模式中的子域名?
我有一個抽象模型,包含我的數據的所有字段和每種語言的派生模型。每一種語言都有它自己的數據庫表,就像這樣:
class ArticleBase(models.Model):
title = models.CharField(max_length=240, unique=True)
date_added = models.DateField(auto_now_add=True)
class Meta:
abstract = True
# This is English, the default.
class Article(ArticleBase):
pass
class Article_de(ArticleBase):
pass
我能得到這樣的文章(我這方面的工作有今天):
def article(request, title, language=None):
if language:
mod = get_model('app', 'Article_' + language)
items = mod.filter(title=title)
else:
items = Article.objects.filter(title=title)
這是我當前的URL模式:
url(r'^article/(?P<title>[a-zA-Z_-]+)/$", 'app.views.article', name='article'),
如何解析URL模式中的子域名前綴,以便將其傳遞到文章視圖中?或者我應該在處理視圖時從請求中獲取此信息?
謝謝,這是一個很好的解決方案。我正在處理位於不同位置的幾臺服務器上的大量數據,並通過語言對其進行分區,從而使查詢時間縮短,並讓我將單獨的事情保存在單獨的服務器上,並通過DNS進行路由 - 目前爲en/es,一個用於de/fr/pt,另一個用於「其他語言」。 :) –