当我尝试打开网站页面时,我遇到了一个“NoReverseMatch”错误,如何修复它?

2024-05-17 06:59:07 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图打开http://127.0.0.1:8000/blog/时,我得到以下错误:

NoReverseMatch at /blog/ Reverse for 'BlogList' with arguments '('test-post',)' not found. 1 pattern(s) tried: ['blog/$']

主URL:

urlpatterns = [
    ...
    url(r'^blog/', include('blog.urls', namespace='blog')),
    url(r'^', include('main.urls', namespace='shop')),
    ...
]\

应用程序URL:

                  url(r'^$', views.blog_list, name='BlogList'),
                  url(r'^(?P<slug>[-\W]+)/$', views.blog_detail, name='BlogDetail'),

视图。py:

def blog_list(request):
    template = 'blog/blog.html'
    posts = Post.objects.filter(available=True)
    page = request.GET.get('page')
    paginator = Paginator(posts, 9)
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)
    context = {
        'posts': posts,
        'page': page
    }
    return render(request, template, context)


def blog_detail(request, slug):
    post = get_object_or_404(Post, slug=slug, available=True)
    template = 'blog/detail.html'
    return render_to_response(template, {'post': post})

型号。py:

class Post(models.Model):
    name = models.CharField(max_length=32)
    slug = models.SlugField(db_index=True, unique=True)
    ...

    class Meta:
        ordering = ['-updated']
        index_together = [
            ['id', 'slug']
        ]

    def __str__(self):
        return "%s" % self.name

    def get_absolute_url(self):
        return reverse('blog:BlogList', args=[self.slug])

Tags: nameselftrueurlreturnrequestdefpage