Не работает ссылка, выдавая NoReverseMatchError
NoReverseMatch at /category/1/
Reverse for 'category' with arguments '('',)' not found. 1 pattern(s) tried: ['category/(?P<category_id>[0-9]+)/$']
Такая ошибка выводится при переходе на категорию сайта c главной страницы. Погуглив, узнал что мой url не соответствует с url в шаблоне и django сообщает об этом. Но мне так и не понятно, в чем некорректность, ведь все написано с соответствием к urls.py шаблонам.
urls.py
urlpatterns = [
path('', home_page, name='home_page'),
path('category/<int:category_id>/', get_category, name='category'),
path('news/<slug:slug>', view_news, name='news'),
]
base.html(ссылки из шапки)
{% for category in categoies %}
<li><a href="{% url 'category' category.id %}" class="nav-link px-2" style="color: rgb(179, 179, 179);">{{ category.title }}</a></li>
{% endfor %}
index.html(главная страница(ссылка из шапки статьи, тоже не рабочая))
{% for item in page_obj %}
<div class="card mb-5">
<div class="card-header">
<div class="category_name"> <a href="{% url 'category' item.category_id %}" style="text-decoration: none; color: rgb(93, 92, 92);">{{ item.category }}</a> - {{ item.created_at }}</div>
</div>
<a href="/news/{{ item.slug }}" style="text-decoration: none; color: rgb(26, 25, 25);">
<div class="card-body">
<h3 class="card-title">{{ item.title }}</h3>
<p class="card-text">{{ item.content|linebreaks|truncatewords:50 }}</p>
</div>
</a>
</div>
{% endfor %}
views.py
def home_page(request):
all_publicated_blogs = News.objects.filter(is_published=True,)
return render(request, 'news/index.html',
{'page_obj': Pagination(request,all_publicated_blogs).pagination(10),})
def get_category(request, category_id):
news_by_category = News.objects.filter(category_id=category_id,
is_published=True)
one_news = news_by_category[0]
return render(request, 'news/category.html',
{'page_obj': Pagination(request, news_by_category).pagination(10),
'news':one_news,})
models.py
class News(models.Model):
title = models.CharField(max_length=50,verbose_name='Заголовок',)
content = RichTextField()
created_at = models.DateTimeField(auto_now_add=True,verbose_name='Дата Создания')
updated_at = models.DateTimeField(auto_now=True)
is_published = models.BooleanField(default=False, verbose_name='Опубликовано')
category = models.ForeignKey('Category', on_delete=models.PROTECT, null=True,
verbose_name='Категория')
slug = models.SlugField(verbose_name='URL', max_length=40, unique=True,)
class Category(models.Model):
title = models.CharField(max_length=50, db_index=True,
verbose_name='Название категории')