在Django中访问视图中的路径url参数

时间:2018-03-17 12:42:28

标签: django

我正在使用Django 2.0

我有两种模式coursechapter

我想在course.pk的{​​{1}}中传递CreateView,因为章节与chapter有关。

这是我的course

urls.py

from django.urls import path from courses.views import Courses, NewCourse, CourseView, NewChapter app_name = 'course' urlpatterns = [ path('all', Courses.as_view(), name='list'), path('new', NewCourse.as_view(), name='new'), path('<pk>/detail', CourseView.as_view(), name='detail'), path('<course_id>/chapter/add', NewChapter.as_view(), name='new_chapter') ]

NewChapter(CreateView)

如果通过class NewChapter(CreateView): template_name = 'courses/chapter/new_chapter.html' model = Chapter fields = ['name'] def get_context_data(self, **kwargs): context = super(NewChapter, self).get_context_data(**kwargs) course = Course.objects.get(pk=kwargs['course_id']) if course is None: messages.error(self.request, 'Course not found') return reverse('course:list') return context def form_valid(self, form): form.instance.created_by = self.request.user form.instance.course = Course.objects.get(pk=self.kwargs['course_id']) form.save() 的课程存在与否,我也想继续进行验证。如果它不存在,用户将被重定向回来,否则他将能够添加章节。

但它正在给出错误

course_id

如何在视图中访问路径网址的参数?

1 个答案:

答案 0 :(得分:0)

您需要使用self.kwargs,而不是kwargs

course = Course.objects.get(pk=self.kwargs['course_id'])