我正在使用Django。我收到下面的错误。尽管增加了很多,但我没有找到解决方案。如果您能提供帮助,我将不胜感激。
/core/views.py
class CreateVote(LoginRequiredMixin, CreateView):
form_class = VoteForm
def get_initial(self):
initial = super().get_initial()
initial['user'] = self.request.user.id
initial['movie'] = self.kwargs[
'movie_id'
]
return initial
def get_success_url(self):
moive_id = self.object.moive.id
return reverse(
'core:MovieDetail',
kwargs = {
'pk':moive_id
}
)
def render_to_response(self, context, **response_kwargs):
movie_id = context['object']
movie_detail_url = reverse(
'core:MovieDetail',
kwargs = {'pk':movie_id }
)
return redirect(
to=movie_detail_url)
我无法从render_to_response中找到movie.id返回上下文dic。
答案 0 :(得分:1)
CreateView
在创建过程中基本上使用了两次:
在两种情况下称为render_to_response
:
self.object = None
,因此这意味着不不会添加到上下文数据中) ;和您可以使用self.object
来访问所创建的对象,但是如前所述,由于render_to_response
是用于呈现尚未填充或存在错误的表单。
通常指定一个提供表单的模板,例如:
class CreateVote(LoginRequiredMixin, CreateView):
form_class = VoteForm
template_name = 'app/some_template.html'
def get_initial(self):
initial = super().get_initial()
initial['user'] = self.request.user.id
initial['movie'] = self.kwargs['movie_id']
return initial
def get_success_url(self):
movie_id = self.object.moive.id
return reverse('core:MovieDetail', kwargs = {'pk': movie_id })
# no render_to_response override