Django url反向错误

时间:2016-12-23 08:56:52

标签: django url-routing django-urls

我有这种类型的网址配置

urlpatterns = [
    url(r'webhook/', include('foward_bot.telegram_API.urls', namespace='api_webhook'), name='webhook'),
]

在telegram_API.urls中我有

urlpatterns = [
    url(r'^(?P<token>[-_:a-zA-Z0-9]+)/$', TelegramView.as_view(), name='api_webhook'),
]

当我尝试以这种方式反向访问此网址时

webhook = reverse('webhook', args={instance.token})

我收到错误:

`Reverse for 'webhook' with arguments '(u'297704876:AAHiEy-slaktdaSMJfZtcnoDC-4HQYYDNOs',)' and keyword arguments '{}' not found. 0 pattern(s) tried: []`

我尝试了不同的变体,例如

webhook = reverse('webhook', kwargs={'token': instance.token}),
webhook = reverse('webhook:token', kwargs={'token': instance.token}),

但我总是类似NoReverseMatch错误

1 个答案:

答案 0 :(得分:1)

撤消网址

由于您已为webhook定义了命名空间,因此当您需要使用视图名称撤消网址时,您需要specify the namespace

reverse('api_webhook:api_webhook', kwargs={'token': instance.token})

reverse('api_webhook:api_webhook', args=(instance.token,))

对您的网址的一些改进:

根据我的经验,这里有一些关于urls.conf的额外指示。

urlpatterns = [
    url(r'^webhook/', include('foward_bot.telegram_API.urls', namespace='api_webhook'), name='webhook'),
]

urlpatterns = [
    url(r'(?P<token>[-_:a-zA-Z0-9]+)/$', TelegramView.as_view(), name='api_webhook'),
]