用于检查Django中是否存在域的中间件

用于检查Django中是否存在域的中间件,django,Django,我有一个单一的应用程序来管理和交付几个站点。我通过从URL确定要服务的域来实现这一点: 或 每个站点显然都有自己的页面,因此最终可能会出现如下url: 我想做的是创建一些中间件,当上面两个()这样的url出现时,它将检查数据库(我已经创建)中是否存在该特定域,如果存在,则继续到索引视图。如果域名不存在,我想转到404页面 这是使用中间件相对简单的事情吗?如果是的话,有人举过我如何实现这一点的例子吗 我知道Django附带的站点框架,但我将使用上面的内容创建一些稍微不同的东西 cla

我有一个单一的应用程序来管理和交付几个站点。我通过从URL确定要服务的域来实现这一点:

每个站点显然都有自己的页面,因此最终可能会出现如下url:

我想做的是创建一些中间件,当上面两个()这样的url出现时,它将检查数据库(我已经创建)中是否存在该特定域,如果存在,则继续到索引视图。如果域名不存在,我想转到404页面

这是使用中间件相对简单的事情吗?如果是的话,有人举过我如何实现这一点的例子吗

我知道Django附带的站点框架,但我将使用上面的内容创建一些稍微不同的东西

    class MyMiddleware():
    def process_request(self, request):
        app_name = request.path.split('/')[0]

        try:
            app = Apps.objects.get(name=app_name)
        except DoesNotExist:
            return

        request.urlconf = app.urlconf
        return
将中间件包括在
设置.py
以及所有其他设置中

这假设您的应用程序模型包含一个知道该应用程序的urlconf的属性。只需将请求指向该urlconf,Django就会处理其余部分

有关参考信息,请参阅和设置的文档


希望这有帮助

非常感谢。这正是我想要的,但我有点被app.urlconf部分难住了,我到底应该从模型中返回什么?解释如何使用request.urlconf。希望有帮助。