简体   繁体   English

Django:获取错误NoReverseMatch进行反向

[英]Django: getting error NoReverseMatch for reverse

Getting error: 出现错误:

NoReverseMatch: Reverse for 'single_view' with arguments '('article', 2013, 12, 12, 'triumphmotorcycleslaunched10newbikesinindia', 16)' and keyword arguments '{}' not found. NoReverseMatch:带有参数'('article',2013,12,12,'triumphmotorcycleslaunched10newbikesinindia',16)'和关键字参数'{}'的'single_view'的反向。 1 pattern(s) tried: [u'(P[article|review|blog|news|video])/(P\\d{4})/(P\\d{2})/(P\\d{2})/(P\\w+)/(P\\d+)$'] 尝试了1个模式:[u'(P [文章|评论|博客|新闻|视频])/(P \\ d {4})/(P \\ d {2})/(P \\ d {2} )/(P \\ w +)/(P \\ d +)$']

Here is my URLConf, models and views 这是我的URLConf,模型和视图

/urls.py /urls.py

...
url(r'^(P<post_type>[article|review|blog|news|video])/', include('post.urls', namespace='post_views')),
...

/post/urls.py /post/urls.py

urlpatterns = patterns('',
  url(r'^$', PostView.as_view(), name="index"),
  url(r'^(P<year>\d{4})/(P<month>\d{2})/(P<day>\d{2})/(P<slug>\w+)/(P<post_id>\d+)$', PostView.single, name="single_view")
)

and get_absolute_url in models.Post class models.Post get_absolute_url

/post/models.py /post/models.py

def get_absolute_url(self):
    from django.core.urlresolvers import reverse
    return reverse('post_views:single_view', args=['article', 2013, 12, 12, str(self.slug).replace('-', ''), self.id])

and view 并查看

/post/views.py /post/views.py

def single(self, request, post_type, year, month, day, slug, post_id, *args, **kwargs):
    post_single = Post.objects.get(pk=1)

    context = {
        "post_single": post_single,
    }
    return self.render_to_response(context);

Resolver Error: Tried after @Yeo suggestion 解析器错误: @Yeo建议后尝试

from django.core.urlresolvers import reverse, resolve
from post.models import Post
p = Post.objects.get(pk=16)
reverse('post_views:single_view', args=['article', 2013, 12, 12, p.slug, p.id])
resolve('/article/2013/12/12/triumphlaunched10newbikesinindia/16/')

Resolver404: {u'path': u'article/2013/12/12/triumphlaunched10newbikesinindia/16/', u'tried': [[], [ (None:vehicle) ^vehicle/>], [ (None:post_views) ^(P[article|review|blog|news|video])/>], [ (None:gallery) ^gallery/>], [ (None:author) ^author/>], [.*)$>], [ (None:None) ^admin/doc/>], [ (admin:admin) ^admin/>], [ (None:None) ^admin_tools/>]]} 解析器404:{u'path':u'article / 2013/12/12 / triumphlaunched10newbikesinindia / 16 /',u'tried':[[],[(None:vehicle)^ vehicle />],[(None:post_views )^(P [文章|评论|博客|新闻|视频])/>],[(无:画廊)^画廊>],[(无:作者)^ author />],[。*)$> ],[(无:无)^ admin / doc />],[(admin:admin)^ admin />],[(无:无)^ admin_tools />]]}}

Your regular expressions are malformed, try replace 您的正则表达式格式错误,请尝试替换

r'(P<post_type>[article|review|blog|news|video])'

with

r'(?P<post_type>article|review|blog|news|video)'

Note queston signs and absence of square brackets. 注意问题征兆和没有方括号。

Similary, replace 相似,替换

r'^(P<year>\d{4})/(P<month>\d{2})/(P<day>\d{2})/(P<slug>\w+)/(P<post_id>\d+)$

with

r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>\w+)/(?P<post_id>\d+)$

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM