Как передать дополнительные аргументы в представление класса в django?

def edit_course(request,course_id):
    course=Courses.objects.get(id=course_id)
    return render(request,"hod_template/edit_course_template.html",{"course":course,"id":course_id})

В приведенном выше коде показано представление в django, которое определено как функция. Я хочу воссоздать это представление как представление на основе класса в django, но я не могу передать дополнительный аргумент, такой как course_id в представление на основе класса, так как оно выдает ошибку. Может ли кто-нибудь подсказать мне, как воссоздать вышеупомянутую функцию в представлении на основе класса?

Вы можете составить DetailView с 'course_id' как pk_url_kwarg. Эквивалентом DetailView является:

from django.views.generic import DetailView

class EditCourseView(DetailView):
    model = Courses
    pk_url_kwarg = 'course_id'
    context_object_name = 'course'
    template_name = 'hod_template/edit_course_template.html'

Примечание: обычно модели Django присваивается сингулярное имя, поэтому Course вместо Courses.

Возможное дублирование URL-параметров и логики в django...

Вы можете получить доступ к своим course_id через

self.kwargs['course_id']

Используйте его внутри функций представления на основе классов

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