Использование slug в Django приводит к ошибке отсутствия обратного пути

Мои извинения, если вы уже читали предыдущее сообщение, которое я сделал о моей проблеме со slug в Django. Я очистил свой старый код и, возможно, стал лучше понимать, что я делаю, но я все еще теряюсь, как заставить URL, сгенерированный из slug, работать на моей главной целевой странице.

Я работаю над портфолио. У меня есть целевая страница, на которой я собираюсь разместить ссылки на отдельные детальные страницы. Для этого я использую get_absolute_url в своих моделях. При тестировании я могу заставить ссылку работать на странице с деталями отдельных проектов, но не на основных целевых страницах. Что забавно, потому что мне не нужно, чтобы эти ссылки работали на страницах отдельных проектов. Я предполагаю, что что-то в моих представлениях настроено неправильно.

Мой views.py настроен следующим образом:

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



def home(request):
    projects = Project.objects.all()
    return render(request, 'portfolio/home.html', {'projects': projects})

def individual_project_view(request, project_id):

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


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

А вот мой urls.py для отдельных целевых страниц, которые находятся в отдельном приложении.

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from portfolio import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('portfolio/', include('portfolio.urls'), name='portfolio'),



    ]

В корневой папке urls.py настроен следующим образом:

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from portfolio import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('portfolio/', include('portfolio.urls'), name='portfolio'),



    ]

Мой models.py настроен следующим образом:

from django.db import models
from django.urls import reverse

# Create your models here.

class Project(models.Model):
    category = models.CharField(max_length=75, blank=True)
    project_name = models.CharField(max_length=100)
    company = models.CharField(max_length=250)
    image = models.ImageField(upload_to='portfolio/images/')

    client = models.CharField(max_length = 30, blank=True)
    type = models.CharField(max_length = 80, blank=True)
    slug = models.SlugField(max_length=50, blank=True)
    description = models.TextField( blank=True)
    testimonial = models.TextField(blank=True)
    featuredimage = models.ImageField(upload_to='portfolio/images/', blank=True)
    type2 = models.CharField(max_length = 80, blank=True)
    description2 = models.TextField(blank=True)
    featuredimage2 = models.ImageField(upload_to='portfolio/images/', blank=True)
    url = models.URLField(blank=True)
    url2 = models.URLField(blank=True)
    testimonial2 = models.TextField(blank=True)
    projecturl = models.URLField(blank=True)
    projecturl2 = models.URLField(blank=True)

    def get_absolute_url(self):
    # u create url only here and then reference here throughout of your project
        return reverse('portfolio:individual_project',args=[self.slug])



    def __str__ (self):

        return self.project_name

А HTML для главной целевой страницы, где я пытаюсь получить доступ к этой ссылке, выглядит следующим образом:

  {% for project in projects %}

  <div class="col-lg-4 col-md-6  padding_top">

    {% if project.url %}
    <a href="{{ project.url }}">
      <img src="{{ project.image.url }}" class="img-fluid  mb-2">

    </a>
    {% else %}


    <a href="{% url 'individual_project' project.slug %}">
    <img src="{{ project.image.url }}" class="img-fluid mb-2">
    </a>

Когда я пытаюсь получить доступ к этому шаблону, я получаю следующую ошибку:

" NoReverseMatch в /. Обратное соответствие для 'individual_project' не найдено. 'individual_project' не является действительным именем функции представления или шаблона. "

Еще раз спасибо, и я надеюсь, что объяснил все правильно - дайте мне знать, если у вас возникнут вопросы.

Вернуться на верх