我有一个当前支持多种语言的 Django 应用程序。我想添加子域支持,以便“de.mysite.com”以德语查询文章,而“mysite.com”以英语(默认语言)查询内容。大约有 20 个子域都指向同一个 Django 应用程序。
我有一个抽象模型,其中包含我的数据的所有字段和每种语言的派生模型。每种语言都有自己的数据库表,如下所示:
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 模式中的子域前缀,以便将其传递到文章视图中?或者我应该在处理视图时从请求中获取此信息?