NoReverseMatch в / Reverse для ‘course_detail’ с аргументами ‘(«,)’ не найден. попробовано 1 шаблон (ы): [‘course/(?P[-a-zA-Z0-9_] )/$’]

#python #django

#python #django

Вопрос:

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

Вот urls.py файл

 from django.urls import path
from . import views

urlpatterns = [
    path('content/order/', views.ContentOrderView.as_view(), name='content_order'),
    path('subject/<slug:subject>/', views.CourseListView.as_view(), name='course_list_subject'),
    path('<slug:slug>/', views.CourseDetailView.as_view(), name='course_detail'),
]
  

views.py

 class CourseDetailView(DetailView):
    model = models.Course
    template_name = 'courses/course/detail.html'


class CourseListView(TemplateResponseMixin, View):
    model = models.Course
    template_name = 'courses/course/list.html'

def get(self, request, subject=None):
    subjects = models.Subject.objects.annotate(total_courses=Count('courses'))
    courses = models.Course.objects.annotate(total_modules=Count('modules'))
    if subject:
        subject = get_object_or_404(models.Subject, slug=subject)
        courses = courses.filter(subject=subject)
    return self.render_to_response({'subjects': subjects, 'subject': subject, 'courses': courses})
  

шаблон

 <div class="module">
    {% for course in courses %}
        {% with subject=course.subject %}
            <h3>
                <a href="{% url 'course_detail' course.slug %}">
                    {{ course.title }}
                </a>
            </h3>
            <p>
                <a href="{% url 'course_list_subject' subject.slug %}">{{
                subject }}</a>.
                {{ course.total_modules }} modules.
                Instructor: {{ course.owner.get_full_name }}
            </p>
        {% endwith %}
    {% endfor %}
  

Комментарии:

1. Вероятно, в вашей базе данных есть курс, для которого не задан slug. Просмотрите свои курсы (например, в администраторе Django) и убедитесь, что у каждого есть slug.

2. Я только что проверил. Это была проблема. Спасибо, Аласдэр