Django NoReverseMatch虽然get_absolute_url返回正确的url
我试图在我的帖子模型中使用带有kwargs的get_absolute_url 在我的模型中,我得到了slug字段和Django NoReverseMatch虽然get_absolute_url返回正确的url,django,url,Django,Url,我试图在我的帖子模型中使用带有kwargs的get_absolute_url 在我的模型中,我得到了slug字段和get\u absolute\u url class Post(models.Model): ...... ...... def get_absolute_url(self): return reverse('post_detail',kwargs={'pk':self.id, 'slug':self.slug}) 在url.py中 url(r'^p/(
get\u absolute\u url
class Post(models.Model):
......
......
def get_absolute_url(self):
return reverse('post_detail',kwargs={'pk':self.id, 'slug':self.slug})
在url.py中
url(r'^p/(?P<pk>\d+)/(?P<slug>[\w.@+-]+)/$',PostDetailView.as_view(),name='post_detail')
它返回正确的URL,即/p/1/这是测试/
但是,当我在模板中使用它时,就像post.get\u absolute\u url
一样,它返回NoReverseMatch
我在这里检查了很多问题,并抄写了答案,但是没有用
请问我做错了什么?您不应该使用url
模板标签。只要这样做:
<a href="{{ post.get_absolute_url }}"></a>
您当前的代码导致reverse
被调用两次,一次在get_absolute\u url
内部调用,一次在get_absolute\u url
的输出中调用。这就是它失败的原因。请发布相关代码-您的url.py
和失败的实际模板代码。现在出现此错误无效的块标记:“post.get_absolute_url”,预期为“empty”或“endfor”
您是否将{%
更改为{
?您确定正在执行{post.get_absolute url}
而不是{%post.get\u absolute\u url%}
?
from website.models import Post
p = Post.objects.first()
p.get_absolute_url()
# returns this
u'/p/1/this-is-a-test/'
<a href="{{ post.get_absolute_url }}"></a>