Django url反向错误

我有这种类型的网址配置

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'),
]

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

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错误

最佳答案 反转网址

由于您已为webhook定义了命名空间,因此当您需要使用视图名称反转URL时,需要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'),
]
点赞