【问题标题】:Django URL kwargs both in main app and subapp, reverse fails主应用程序和子应用程序中的 Django URL kwargs,反向失败
【发布时间】:2014-01-12 16:09:33
【问题描述】:

编辑:没关系,这是完全不相关的东西(错误的 URL 名称)。

我有一个 Django urls.py,其中包含来自子应用的另一个 urls.py。尝试使用 reverse() 时出现“找不到反向”错误。我在包含之前和之后的 URL 中都使用关键字参数,基本上是:

第一个 urls.py:

urlpatterns = patterns(
    '',
    # Change requests are in a subapp
    url(r'^projects/(?P<project_slug>[^/]+)/changerequests/',
        include('myapp.changerequests.urls')),
)

在子应用的 urls.py 中:

urlpatterns = patterns(
    '',
    url(r'^detail/(?P<request_id>\d+)/$',
        views.RequestDetailPage.as_view(),
        name='changerequests_detail'),
)

现在我想找到一个类似的网址

url = reverse('changerequests_detail', kwargs={
               'project_slug': self.project.slug,
               'request_id': str(self.id)})

所以它使用了两个 kwarg,它们分布在两个 urls.pys 上。但是反过来找不到答案(Reverse for 'changerequests_main' with arguments '()' and keyword arguments '{u'project_slug': u'123-2013_monitoring_slibaanwas-hdsr', u'request_id': '2'}' not found.)。

是这个问题吗?以这种方式在 urls 文件上传播 kwargs 是不可能的吗?

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    可能发生错误是因为它试图反转'changerequests_main' URL,而不是'changerequests_detail'

    【讨论】:

    • 原来我首先遇到了一个不同的问题(忘记将 project_slug 添加到 reverse),在尝试找到它时,我检查了 changerequests_main 名称。然后我没有改回来。感谢您发现问题!
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多