
[英]How do I not redirect to a success_url in Django after I make a post using a modal form and stay on the current page?
[英]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_url
是reverse_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.