Django:创建后重定向到详细信息视图 [英] Django: Redirect to Detail View after Creation

查看:43
本文介绍了Django:创建后重定向到详细信息视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

成功提交表单并创建对象后,我想重定向到详细信息视图.

I'd like to redirect to a detail view after I successfully submitted a form and created the object.

我的view.py

class ObjectCreateView(CreateView):
    model = Object
    form_class = ObjectCreateForm
    template_name = 'frontend/base/object_create.html'

  def get(self, request, *args, **kwargs):
      form = ForecastConfigurationCreateForm()
      form.fields['status'] = ModelChoiceField(queryset=ObjectStatus.get_object_status_list(self))
      return render(request, self.template_name, {'form': form})

  def post(self, request, *args, **kwargs):
      form = self.form_class(request.POST)
      if form.is_valid():
          self.fcc_form = form.save(commit=True)
          messages.add_message(self.request, messages.INFO, 'Good job!')
          return render_to_response(reverse(viewname='object_detail', kwargs={'uuid': self.fcc_form.uuid}))
      else:
          messages.add_message(self.request, messages.ERROR, 'Error!')
          return render(request, self.template_name, {'form': form})

错误消息是:

TemplateDoesNotExist位于/​​ object_create//object_detail/3a3d6279-1531-45d4-9ba9-b691886facf4/

TemplateDoesNotExist at /object_create/ /object_detail/3a3d6279-1531-45d4-9ba9-b691886facf4/

正在调用的URL是:

http://test.com:8000/object_create/?next =/object_detail/a5b2a693-6f90-4b98-b9a2-fc2fe6a90995/

我想要的是

http://test.com:8000/object_detail/a5b2a693-6f90-4b98-b9a2-fc2fe6a90995/

谢谢!

推荐答案

而不是尝试呈现页面,而是使用 HttpResponseRedirect :

Instead of trying to render the page, use HttpResponseRedirect instead:

class ObjectCreateView(CreateView):
    ...

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            self.fcc_form = form.save(commit=True)
            messages.add_message(self.request, messages.INFO, 'Good job!')
            return HttpResponseRedirect(reverse('object_detail', kwargs={'uuid': self.fcc_form.uuid}))
        else:
            messages.add_message(self.request, messages.ERROR, 'Error!')
            return render(request, self.template_name, {'form': form})

这篇关于Django:创建后重定向到详细信息视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆