Как я могу добавить два разных слизня на две модели в двух разных приложениях в Django?

Я пытаюсь добавить слизни на страницу сервиса и страницу проекта, но всякий раз, когда я пытаюсь запустить страницу проекта, я получаю сообщение Page not found (404) Не найдена служба, соответствующая запросу Метод запроса: GET URL запроса: http://127.0.0.1:8000/project/. Поднято: pages.views.<class 'pages.views.ServiceDetail'>

Вот мой код, основанный на классах

models.py

class Service(models.Model):
title = models.CharField(max_length=50)
photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
alt = models.CharField(max_length=60, blank=True)
icon = models.CharField(max_length=20)
description = RichTextField()
shortdesc = models.CharField(max_length=255)
slug = models.SlugField(null=False, unique=True)
created_date = models.DateTimeField(default=datetime.now, blank=True)

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('service_detail', kwargs={'slug': self.slug})

class Project(models.Model):
title = models.CharField(max_length=50)
category = models.CharField(max_length=50)
photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
alt = models.CharField(max_length=60, blank=True)
client = models.CharField(max_length=50)
launched = models.CharField(max_length=50)
demands = models.CharField(max_length=50)
description = RichTextField()
shortdesc = models.CharField(max_length=255)    
slug = models.SlugField(null=False, unique=True)
video_link = models.URLField(max_length=100)
created_date = models.DateTimeField(default=datetime.now, blank=True)

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('project_detail', kwargs={'slug': self.slug})

urls.py

path('<slug:slug>/', views.ServiceDetail.as_view(), name='service_detail'),

path('project/<slug:slug>/', views.ProjectDetail.as_view(), name='project_detail'),

views.py

def project(request):
return render(request, 'project/project.html')

class ProjectDetail (generic.DetailView):
model = Project
template_name = 'project/project_detail.html'

def service(request):
return render(request, 'pages/service.html')

class ServiceDetail (generic.DetailView):
model = Service
template_name = 'pages/service_detail.html'

как я могу изменить маршрут, чтобы моя страница проекта могла работать? Любая помощь будет благодарна

Вам необходимо изменить порядок путей:

path('project/<slug:slug> ....
path('<slug:slug> ....

При текущем порядке 'project' интерпретируется как slug, потому что пути подбираются один за другим.

Ваш путь url в urls.py указывает на path('project/slug:slug/',...), однако вы запрашиваете страницу без переданной части /slug:slug/ http://127.0.0.1:8000/project/ (часть slug отсутствует). Запросите http://127.0.0.1:8000/project/slug-name (замените slug-name на правильный slug) и посмотрите, работает ли это.

Также см. ответ Разенштейна

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