我目前的网址格式为:
url(r'^(?P<category>\w+)/(?P<hash>\w+)/$', article, name='article'),
hash是一个字母数字字符串,可以是大写或小写。
示例:gqaBittXW9hcyO
我的网址格式应该是什么样的呢?
错误:
NoReverseMatch at /news/gqaBittXW9hcyO/
Reverse for 'article' with keyword arguments '{'id': 1, 'category': 'news'}' not found. 1 pattern(s) tried: ['(?P<category>\\w+)/(?P<hash>\\w+)/$']
视图
def article(request, category, hash, extra_context=None):
name = resolve(request.path).kwargs['category']
instance = get_object_or_404(Post, hash=hash, entered_category=name)
print('Hash:', instance.hash) #prints correctly (gqaBittXW9hcyO)
context = {
'id': instance.id,
'instance': instance,
}
return render(request, 'article.html', context)
答案 0 :(得分:1)
错误表示您尝试使用参数article
创建名为{'id': 1, 'category': 'news'}
的网址(可能是您的模板)。但是,您定义它的方式是,无法使用article
构建id
网址,您需要hash
。
网址/news/gqaBittXW9hcyO/
与此错误无关,但匹配正确。