【发布时间】:2017-12-14 17:10:57
【问题描述】:
我一直在尝试解决这个问题一段时间,但一直未能找到有效的解决方案。也许有人可以帮助指出更好的方法!
我正在使用我的根 urlconf 将两个请求重定向到包含的应用程序:
url("^about/news/", include("kdi.urls")),
url("^about/recognition/", include("kdi.urls")),
这里是kdi 应用的urlconf:
url(r"^$", "kdi.views.news", name="news"),
# this is the pattern that needs to change:
url(r"^$", "kdi.views.recog", name="recog"),
在应用程序的 urlconf 中使用从根 ^about/news/ 和 ^about/recognition 到 ^$ 的更精细的重定向似乎更聪明。这仅适用于一种模式,但我想将其扩展为适用于两种模式。
将^about/ 从根目录引导到我可以在kdi 应用程序中检查^/news$ 或^/recognition$ 的应用程序会更智能吗?如果没有匹配,那是否也可以使用根的包罗万象的^?是否可以从 urlconf 检查request.path,然后使用 if 语句指向正确的视图?或者也许在根目录中使用 name 字段,然后通过应用程序的 url 模式中的该名称访问?
只是在逻辑上有点麻烦!
编辑:
从根 urlconf 中删除了 namespace 字段以限制混淆
【问题讨论】:
-
你有两个
include和相同的namespace,我认为它们应该是不同的。 -
我可以从子应用通过命名空间访问模式吗?这很容易解决。我正在寻找更智能的模式。
-
访问模式需要使用
django.core.urlresolvers.reverse -
谢谢,我看反了。这带来了另一个问题:我可以在根目录中命名一个包含模式
url("^about/news/", include("kdi.urls")),吗?这样做的问题是我不需要通过模板访问 url,只需调用子应用程序中的特定视图。视图处理大部分逻辑。 -
reverse可以使用命名空间吗?
标签: python django routes django-urls urlconf