Reputation: 2437
Getting error:
NoReverseMatch: Reverse for 'single_view' with arguments '('article', 2013, 12, 12, 'triumphmotorcycleslaunched10newbikesinindia', 16)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'(P[article|review|blog|news|video])/(P\d{4})/(P\d{2})/(P\d{2})/(P\w+)/(P\d+)$']
Here is my URLConf, models and views
/urls.py
...
url(r'^(P<post_type>[article|review|blog|news|video])/', include('post.urls', namespace='post_views')),
...
/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
/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
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
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/>]]}
Upvotes: 0
Views: 1644
Reputation: 48317
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+)$
Upvotes: 1