django urlconf直接从root到包含app逻辑

时间:2017-07-10 20:25:44

标签: python django routes django-urls urlconf

我一直试图解决这个问题一段时间,但我们找不到有效的解决方案。也许有人可以帮助指出一个更好的方法!

我使用我的root urlconf将两个请求重定向到包含的应用程序:

url("^about/news/", include("kdi.urls")),
url("^about/recognition/", include("kdi.urls")),

这是kdi app的网址:

url(r"^$", "kdi.views.news", name="news"),

# this is the pattern that needs to change:
url(r"^$", "kdi.views.recog", name="recog"),

使用从根^about/news/^about/recognition到应用程序的urlconf中的^$的更细粒度的重定向似乎更聪明。只使用一种模式,这种方法很好,但是我希望将其缩放以适用于两种模式。

^about/从root引导到我可以在^/news$应用中检查^/recognition$kdi的应用是否更智能?如果没有匹配,那还可以使用root的全部^吗?是否可以从urlconf检查request.path然后使用if语句指向正确的视图?或者可以在根目录中使用name字段,然后在应用的网址模式中通过该名称进行访问?

用这个来制定逻辑时遇到一些麻烦!

修改

从root urlconf中删除namespace字段以限制混淆

1 个答案:

答案 0 :(得分:3)

你在做一些非常奇怪的事情,我无法理解为什么。

您应该只包含一次应用网址。但是,包含文件中的每个URL都需要不同 - 否则Django可能不知道如何路由请求。

所以,主要的urls.py应该只是:

url("^about/", include("kdi.urls")),

应用程序应该是:

url(r"^news/$", "kdi.views.news", name="news"),
url(r"^recognition/$", "kdi.views.recog", name="recog")