在作为嵌套应用使用的可重用应用中反转 url

Reverse url in reusable app that is consumed as a nested app

回答了类似的问题

不过我的情况略有不同。我创建了一个名为 "categories" 的可重用应用程序。在我的项目中,我有一个名为 "dashboard" 的应用程序。仪表板应用程序包括可重复使用的 "categories" 应用程序。这导致以下内容用于反转 url

reverse('dashboard:categories:browse')

但是,我的可重用应用不知道 "dashboard" 命名空间。我希望能够使用我上面链接的解决方案仅在可重用类别应用程序中反转以下内容。

reverse('categories:browse')

目前,在categories.urls中设置app_name无效。我在反转 "categories:browse" 时得到 NoReverseMatch

以下是应用程序如何包含在 urls.py 文件中的摘录。

# myproject/urls.py
url(
    r'^dashboard/',
    include(
        'dashboard.urls',
        namespace='dashboard',
    )
),


# dashboard/urls.py
url(
    r'^categories/',
    include(
        'categories.urls',
        namespace="categories",
    ),
),

您可以直接在主 urls.py 中包含 categories 网址:

# myproject/urls.py
url(r'^dashboard/categories/', include('categories.urls', namespace='categories')),
url(r'^dashboard/', include('dashboard.urls', namespace='dashboard')),

这样你的 categories 网址就不会在嵌套的命名空间中,你可以简单地使用 reverse('categories:browse').