我正在使用Django 2.0
我有两种模式course
和chapter
我想在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
如何在视图中访问路径网址的参数?
答案 0 :(得分:0)
您需要使用self.kwargs
,而不是kwargs
。
course = Course.objects.get(pk=self.kwargs['course_id'])