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