Использование сгенерированного Django URL slug для ссылок на определенные страницы

Здравствуйте щедрые и добрые люди Stack Overflow. Я довольно новичок в Python и Django и взялся за проект по созданию портфолио для моего копирайтинга

У меня есть главная целевая страница, на которой будет сетка из 9 различных писательских проектов. Кто-то нажмет на одно из изображений проекта, а затем перейдет на новую страницу с более подробным описанием проекта.

Каждая отдельная страница проекта имеет URL, путь к которому содержит slug. Код, который у меня есть, работает на генерации этого пути. Каждый пишущий проект будет иметь URL путь, который содержит projects/(slug)

Моя проблема в том, что я не могу заставить эту ссылку на основе slug, которая будет указывать на каждую отдельную страницу, работать в моем коде. Я получаю эту ошибку: NoReverseMatch at / Reverse for 'individual_project' not found. 'individual_project' не является действительной функцией представления или именем шаблона.

Прошу простить любые неточности в этом коде, так как мне трудновато понять все это.

Вот мой views.py:

from django.shortcuts import render, get_object_or_404, get_list_or_404
from .models import Project

def individual_project_view(request, project_id):
     projectpage = get_list_or_404(Project, slug=project_id) 
     return render(request, 'projects/project_detail.html', {'projectpage':projectpage})

def project_home(request):
     portfolioprojects = get_list_or_404(Project)
     return render(request, 'projects/project_detail.html', {'portfolioprojects':portfolioprojects})

Вот мой urls.py:

from django.urls import path, include
from projects import views
app_name = 'portfolio'

urlpatterns = [path('<slug:project_id>', views.individual_project_view, name='individual_project'),]

И наконец, мой HTML:

<a href="{% url 'individual_project' %}">
<img src="{{ project.image.url }}" class="img-fluid mb-2"></a>
{% endif %}
<div>
<h2 class= "category">{{ project.category }}</h2>
<h3 class="client">{{ project.description }}</h3>
<h4 class="project_type">{{ project.title }}</h4>
</div>

Спасибо, что прочитали - и я ценю помощь!

Вам нужно добавить выражение для slug в тег шаблона {% url … %} [Django-doc]:

<a href="{% url 'portfolio:individual_project' project.slug %}">

Поскольку вы определили app_name в urls.py, вам нужно префикс app_name, поэтому portfolio:individual_project вместо individual_project.

Для правильного обратного пути по имени вы должны указать не только имя, но и аргументы, если они определены для этого пути. Поэтому правильным вариантом использования {% url %} в данном случае будет

<a href="{% url 'individual_project' project.slug %}">

У вас есть два варианта:

<a href="{% url 'individual_project' project.slug %}">

или вы используете метод "reverse" от django. в вашем классе model:

from django.urls import reverse

# this method called automaticallly by django. we are manuallly calling it here
  def get_absolute_url(self):
    # u create url only here and then reference here throughout of your project
    return reverse("individual_project",args=[self.slug])

в вашем шаблоне:

 # looks like instance_of_model is project.
 # we are not hardcoding the url, passing a reference
  <a href="{{project.get_absolute_url}}">   </a>
Вернуться на верх