django项目中的通配符子域

时间:2011-08-02 20:06:23

标签: python django

有没有人在他们的应用程序中使用过通配符子域名?我需要想出一种“本地化”我的应用程序的方法。当我说本地化时,我的意思是任何前往ny.foo.com/items/new/的人都会被发送到一个查看数据库并在ny中搜索新项目的视图。显然,我们可以用任何州取代纽约。

任何提示都会很棒

谢谢!

1 个答案:

答案 0 :(得分:5)

我会使用中间件来做,例如:

class StateCodeMiddleware(object):

   def process_request(self, request):
        bits = request.META['HTTP_HOST'].split('.')
        if len(bits) == 3 and len(bits[0]) == 2:
            request.state_code = bits[0]
        else:
            request.state_code = None
            # Or a redirect to the default state.

然后在您的任何观看中,您只需检查request.state_code并仅为该状态获取新项目。


编辑:对于开发,最好的方法是设置本地DNS服务器。例如。 dnsmasq非常容易配置:

address=/.dev/127.0.0.1 # in dnsmasq.conf

这使*.dev指向localhost。您还必须将系统配置为使用本地DNS服务器(在UNIX系统上,通过将nameserver 127.0.0.1放入/etc/resolve.conf)来执行此操作。

或者,您可以列出/ etc / hosts中的所有域名(如果它是有限集):

127.0.0.1 ny.localhost, az.localhost  # and so on