Python 如何根据域/子域显示内容

Python 如何根据域/子域显示内容,python,django,Python,Django,我正试图写一个小博客,根据域/子域的不同,只有一些特定的博客内容会显示出来 比如说,主博客位于www.mainblogsite.com。在这里我想显示所有的博客条目 但是我们可以说,主博客还有一个子域名,叫做www.fr.mainblogsite.com,只有法语的博客条目才会出现 我正在用Django写博客 我对数据库建模的最初想法如下: class BlogEntry(models.Model): text = models.TextField() lang = models.Cha

我正试图写一个小博客,根据域/子域的不同,只有一些特定的博客内容会显示出来

比如说,主博客位于
www.mainblogsite.com
。在这里我想显示所有的博客条目

但是我们可以说,主博客还有一个子域名,叫做
www.fr.mainblogsite.com
,只有法语的博客条目才会出现

我正在用Django写博客

我对数据库建模的最初想法如下:

class BlogEntry(models.Model):
  text = models.TextField()
  lang = models.CharField(max_length="2")
我只是通过
request.META['HTTP\u HOST']
获取域名,根据域名,我将按以下语言过滤博客条目:

#for fr.mainblogsite.com
BlogEntry.objects.filter(lang='fr')
这只为我提供了
fr.mainblogsite.com


我的问题是:这种数据库架构有意义吗?我不太了解域和子域是如何工作的,。。从数据库设计的角度来看,您应该将
lang
字段移动到自己的模型中,并从BlogEntry中引用它

class Language(models.Model):
    lang = models.CharField(max_length="2")

class BlogEntry(models.Model):
    text = models.TextField()
    lang = manufacturer = models.ForeignKey('Language')

这样,您可以通过更新单个记录而不是多个记录来更改语言的实际名称。然而,如果你确信这永远不会发生,你也可以坚持你的方法

我认为您应该看看这些模型,它们正是为了解决您试图解决的问题而存在的——有多个子域和由内容表示的域

引用其中提到的例子:

from django.db import models
from django.contrib.sites.models import Site

class BlogEntry(models.Model):
    headline = models.CharField(max_length=200)
    text = models.TextField()
    # ...
    sites = models.ManyToManyField(Site)

你是说lang=models.ForeignKey(语言)?