我有一個按預期作業的更新視圖。唯一的問題是我不知道如何重定向回提交后正在更新的帖子。我相信我在正確的軌道上,get_success_url但我無法讓它發揮作用
看法
class UpdateBuildLog(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = BuildLog
form_class = BuildLogupdateForm
template = 'blog/buildlog_update.html'
def get_object(self):
return BuildLog.objects.get(pk=self.kwargs["pkz"])
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
def get_success_url(self):
pk = self.kwargs["pkz"]
return reverse("build-log-view", kwargs={"pkz": pk})
def test_func(self):
post = self.get_object()
if self.request.user.id == post.author_id:
return True
return False
網址:
path('post/<int:pk>/build-log/<int:pkz>/', views.BuildLogDisplay, name='build-log-view'),
path('post/<int:pk>/build-log/<int:pkz>/delete/', views.BuildLogDelete, name='build-log-delete'),
path('post/<int:pk>/build-log/<int:pkz>/update/', UpdateBuildLog.as_view(), name='build-log-update'),
錯誤:
NoReverseMatch at /post/127/build-log/75/update/
Reverse for 'build-log-update' with keyword arguments '{'pkz': 75}' not found. 1 pattern(s) tried: ['post/(?P<pk>[0-9] )/build\\-log/(?P<pkz>[0-9] )/update/$']
uj5u.com熱心網友回復:
你需要兩者pk,pkz反之亦然:
def get_success_url(self):
pkz = self.kwargs["pkz"]
pk = self.kwargs["pk"]
return reverse("build-log-view", kwargs={"pkz": pkz, "pk": pk})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/346380.html
標籤:姜戈 django-views
