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

时间:2016-11-20 21:31:31

标签: django django-urls

回答了类似的问题here

但我的情况略有不同。我创建了一个名为“类别”的可重用应用程序。在我的项目中,我有一个名为“仪表板”的应用程序。仪表板应用程序包含可重复使用的“类别”应用程序。这会导致以下内容用于反转网址

reverse('dashboard:categories:browse')

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

reverse('categories:browse')

目前,在categories.urls中设置app_name不起作用。在撤消“类别:浏览”时,我得到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",
    ),
),

1 个答案:

答案 0 :(得分:0)

您可以直接在categoriesurls.py中添加# myproject/urls.py url(r'^dashboard/categories/', include('categories.urls', namespace='categories')), url(r'^dashboard/', include('dashboard.urls', namespace='dashboard')), 个网址:

categories

这样,您的reverse('categories:browse')网址不在嵌套名称空间中,您只需使用def check(x, num, i): if not x[i:]: # index past length return False if x[i] == num: return True return(check(x, num, i+1))