gpt4 book ai didi

Django NoReverseMatch at/services/'services' 不是注册的命名空间

转载 作者:行者123 更新时间:2023-12-04 14:51:14 26 4
gpt4 key购买 nike

我正在尝试显示一组按类别分类的图像。当用户单击类别名称时,页面应显示属于该类别的图像。我收到下一个浏览器错误:

NoReverseMatch at /services/
'services' is not a registered namespace

. . .

Error during template rendering

这些模型属于不同的应用程序,一个(包含类别模型)工作正常,而另一个(包含服务模型)只要我删除我需要的 html 内容就可以工作。请帮助我。

这是我的文件:

home_app/models.py

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

class Category(models.Model):
name=models.CharField(primary_key=True, max_length=50)
slug=models.SlugField(unique=True, blank=True, null=True)
image=models.ImageField(upload_to='category_home')
description=models.CharField(max_length=100)
content=models.TextField(max_length=500, default="Service")
created=models.DateTimeField(auto_now_add=True)

class Meta:
verbose_name = 'Category'
verbose_name_plural = 'Categories'

def __str__(self):
return self.name

def get_absolute_url(self):
return reverse('services:services_by_category', args=[self.slug])

services_app/models.py

from django.db import models
from home_app.models import Category

class Services(models.Model):
category=models.ForeignKey(Category, on_delete=models.CASCADE)
title=models.CharField(max_length=50)
completed=models.DateField(auto_now_add=False, null=True, blank=True)
content=models.CharField(max_length=50, null=True, blank=True)
image=models.ImageField(upload_to='services_services')
created=models.DateTimeField(auto_now_add=True)

class Meta:
verbose_name = 'Service'
verbose_name_plural = 'Services'

def __str__(self):
return '%s de %s' % (self.category, self.title)

services_app/views.py

from django.shortcuts import render, get_object_or_404
from .models import Services
from home_app.models import Category

def service_list(request,category_slug=None):
category = None
categories = Category.objects.all()
services = Services.objects.all()
if category_slug:
category = get_object_or_404(Category,slug=category_slug)
services = services.filter(category=category)
return render(request, 'services_app/services.html', {'categories':categories, 'category':category, 'services':services,})

services_app/urls.py

from django.urls import path
from services_app import views

urlpatterns = [
path('', views.service_list, name='Services'),
path('<slug:category_slug>', views.service_list, name='services_by_category'),
]

services_app/templates/services_app/services.html

    {% extends "home_app/base.html" %}   
{% load static %}
{% block content %}

<!-- The app only works if I delete this section -->

<div id="sidebar">
<h3>Categories</h3>
<ul>
{% for c in categories %}
<li>
<h4><a href="{{ c.get_absolute_url }}">{{ c.name }}</a></h4>
</li>
{% endfor %}
</ul>
</div><br>
<div>
<h1>{% if category %}{{ category.name }}{% endif %}</h1>
{% for service in services %}
<img src="{{service.image.url}}">
{% endfor %}
</div>
{% endblock %}

还有我的主要网址:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home_app.urls')),
path('services/', include('services_app.urls')),
path('contact/', include('contact_app.urls')),
]

最佳答案

只需更改 en models.py 中的以下内容:

def get_absolute_url(self):
return reverse('services_by_category', args=[self.slug])

'因为您还没有定义命名空间服务。

关于Django NoReverseMatch at/services/'services' 不是注册的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69053484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com