【问题标题】:NoReverseMatch at /course/ Reverse for 'course_detail' not found. 'course_detail' is not a valid view function or pattern nameNoReverseMatch at /course/ Reverse for 'course_detail' 未找到。 “course_detail”不是有效的视图函数或模式名称
【发布时间】:2021-12-25 15:29:13
【问题描述】:

我正在尝试将数据库中的所有课程返回到我的课程网址,但出现此错误

在 /course/ 的 NoReverseMatch

找不到“course_detail”的反向。 “course_detail”不是有效的视图函数或模式名称。

这是我的代码

class Courses(models.Model):
    category = models.ForeignKey(Category, related_name='courses', on_delete=models.CASCADE, null=True)
    name = models.CharField(max_length=100)
    description = models.TextField()
    cover = models.ImageField(blank=True, null=True, upload_to="courses_cover/")
    slug = models.SlugField()

    # Courses content
    content_url = models.URLField(blank=True, null=True)
    content_file = models.FileField(blank=True, null=True)

    price = models.PositiveIntegerField(default=1)
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ('name',)

    def __str__(self):
        return self.name

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

    def price_display(self):
        return "{0:.2f}".format (self.price / 100)

views.py 的代码

def course_list(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    courses = Courses.objects.filter(available=True)
    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        courses = courses.filter(category=category)
    return render(request,'courses/content/list.html', {'category': category, 'categories': categories, 'courses': courses})

def course_detail(request, id, slug):
    course = get_object_or_404(Courses, id=id, slug=slug, available=True)
    return render(request, 'courses/content/detail.html', {'course': course})

课程网址的代码

app_name = "courses"
urlpatterns = [
path('', views.course_list, name='course_list'),

【问题讨论】:

  • 您的网址中没有course_detail 路径/视图?
  • 谢谢这个作品...我忘记添加 course_detail 的路径

标签: python django django-views django-urls


【解决方案1】:

您是否在您的主要urls.py 中声明了您的namespace?或者你有没有声明course应该是courses复数?

path('courses/', include('courses.urls', namespace='courses')),

【讨论】:

  • 这是我的 url 路径 path('course/', include('courses.urls', namespace='courses')) 的代码,
  • @moses-eyime-akoji 您的urlpatterns 中的course_detail 网址是什么,因为它没有显示在您的问题中。您的问题似乎源于模型中的get_absolute_url,而 Django 无法反转您的 course_detail 网址。
猜你喜欢
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多