#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. Я только что проверил. Это была проблема. Спасибо, Аласдэр