我一直试图解决这个问题一段时间,但我们找不到有效的解决方案。也许有人可以帮助指出一个更好的方法!
我使用我的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
字段以限制混淆
答案 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")