Как передать дополнительные аргументы в представление класса в 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']
Используйте его внутри функций представления на основе классов