2011-06-16 71 views
5

我为我的客户维护一个Django web应用程序。我们在Django和计算机用户中构建它,这很好。我们现在想迎合移动设备用户。Django站点 - 两个站点的不同urls.py

在模板开关的顶部,我们也需要不同的工作。该应用程序将具有以不同方式工作的视图,但URL结构也需要简化。

我知道什么,我要问的违反DRY风气但有分裂urls.py,使得其一半用于ourdomain.com,另一半是m.ourdomain.com的好办法?如果我可以这样做,我可以添加一个mobile_views.py并写入新的视图。

Django的网站已启用该项目,但我很乐意使用硬编码request.domain.startswith('m.')风格的黑客。似乎这可能会更好 - 但我不知道如何从URL文件获取请求。

回答

6

使用middleware来检测对其他站点的访问并将request.urlconf设置为您要使用的其他urlconf。

+0

是的,这将为我工作。谢谢。编辑:我认为这必须是触发的第一个中间件规则之一。你知道Django的“reverse”是否仍然可以工作(假设新的URL具有相同的名称)? – Oli 2011-06-16 10:54:24

+0

您可能必须将'request.urlconf'传递给['reverse()'](https://docs.djangoproject.com/zh/dev/topics/http/urls/#django.core.urlresolvers.reverse),但否则它应该工作。 – 2011-06-16 10:57:35