繁体   English   中英

我在 Django 视图中的 success_url 中放了什么。 现在,这不是保存编辑过的表单,也不是重定向页面

[英]What do I put in the success_url in my django view. Right now, this isn't saving the edited form nor redirecting the page

我不知道在 django 视图中使用什么或如何使用 success_url。 我试过在网上阅读但不明白,也试过做一些别人告诉我的事情但没有用。 我很确定我做错了什么,但我不知道是什么以及如何解决它。

视图.py:

class EditComplaint(UserPassesTestMixin, UpdateView):
model = Complaint
form_class = ComplaintForm
template_name = 'newcomplaint.html'
success_url = reverse_lazy('Complaint')
def get_queryset(self, *args, **kwargs):
    return super().get_queryset(*args, **kwargs).filter(
        user=self.request.user
    )

def test_func(self):
    complain = self.get_object()

    if self.request.user == complain.user:
        return True
    raise Http404(_('This complain does not exist'))

网址.py:

urlpatterns = [...
path('Complaint/<int:pk>/edit/', accounts.views.EditComplaint.as_view(), name='Complaint')
]

如果我这样做,那么它会被重定向到:

在此处输入图片说明

当我将它重定向到我的历史记录页面时,它没有显示特定的编辑投诉。 我以为它正在删除它,所以我去了管理面板,但我所有的抱怨都在那里,也可以看到所做的更改,但不知何故用户已更改,现在设置为 ----。

正如您在错误消息中看到的那样,它告诉您它正在尝试使用视图名称Complaint查找 url,但找不到不带参数的 url。

您当前用于投诉编辑的urlpattern采用一个未通过的参数pk 您当前的success_urlreverse_lazy('Complaint') ,因此您会收到错误消息。

此问题的解决方法get_success_url在我们的view类中添加一个方法get_success_url

def get_success_url(self):
    return reverse_lazy('Complain', args=[self.object.pk])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM