我有这种类型的网址配置
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
错误
答案 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'),
]