Когда я пытаюсь открыть страницу веб-сайта, у меня появляется ошибка «NoReverseMatch», как я могу это исправить? - PullRequest
0 голосов
/ 03 мая 2019

Когда я пытаюсь открыть http://127.0.0.1:8000/blog/, я получаю следующую ошибку:

NoReverseMatch в / blog / Reverse для 'BlogList' с аргументами '(' test-post ',)' не найден,Попробован 1 шаблон (ов): ['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'),

views.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})

models.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])

1 Ответ

0 голосов
/ 03 мая 2019

Ваш подробный вид - BlogDetail, а не BlogList.

   return reverse('blog:BlogDetail', args=[self.slug])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...