Django 多个成功网址
Django multiple success urls
如何使用 kwargs 或其他东西设置多个成功 url?
我要的是,根据什么按钮点击了不同的成功URL。
保存 = 转到 DetailView
保存并继续=留在这个升级视图中
save&createNew = 转到 CreateView
稍后应该会像在 Django 管理中一样工作
我有这个更新视图:
class TopicEditView(UpdateView):
fields = ['title','description',]
model = Topic
def post(self, request, *args, **kwargs):
data = request.POST.copy()
if data.get('save', False):
pass
elif data.get('save_and_continue', False):
pass
...
return UpdateView.post(self, request, *args, **kwargs)
def get_success_url(self):
return reverse('topic_detail', kwargs={'pk':self.object.pk})
还有这个简单的模板:
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Speichern" name="save"/>
<input type="submit" value="Speichern & weiter"
name="save_and_continue"/>
</form>
在您的 get_success_url
方法中,检查 self.request.POST
中提交按钮的值,以及 return 适当的 url:
def get_success_url(self):
if self.request.POST.get('save'):
return reverse('success_url_for_save')
elif self.request.POST.get('save_and_continue'):
return reverse('success_url_for_save_and_continue', kwargs={'pk':self.object.pk})
else:
return reverse('fallback_success_url')
不需要检查 post
方法中的值。
如何使用 kwargs 或其他东西设置多个成功 url?
我要的是,根据什么按钮点击了不同的成功URL。
保存 = 转到 DetailView
保存并继续=留在这个升级视图中
save&createNew = 转到 CreateView
稍后应该会像在 Django 管理中一样工作
我有这个更新视图:
class TopicEditView(UpdateView):
fields = ['title','description',]
model = Topic
def post(self, request, *args, **kwargs):
data = request.POST.copy()
if data.get('save', False):
pass
elif data.get('save_and_continue', False):
pass
...
return UpdateView.post(self, request, *args, **kwargs)
def get_success_url(self):
return reverse('topic_detail', kwargs={'pk':self.object.pk})
还有这个简单的模板:
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Speichern" name="save"/>
<input type="submit" value="Speichern & weiter"
name="save_and_continue"/>
</form>
在您的 get_success_url
方法中,检查 self.request.POST
中提交按钮的值,以及 return 适当的 url:
def get_success_url(self):
if self.request.POST.get('save'):
return reverse('success_url_for_save')
elif self.request.POST.get('save_and_continue'):
return reverse('success_url_for_save_and_continue', kwargs={'pk':self.object.pk})
else:
return reverse('fallback_success_url')
不需要检查 post
方法中的值。