提交表单后传递url变量

时间:2018-03-10 13:03:19

标签: python html django forms

我正在一个简单的网站上工作,我可以在一个简单的数据库中注册隔离的信息系统,并使用ForeignKeys为每个系统分配硬盘。从数据库中删除系统时,我使用DeleteView。

在DeleteView中:要检查是否有与系统关联的硬盘,我使用自定义方法。如果未找到硬盘,则显示DeleteView表单。如果有,则显示相关硬盘的列表而不是表单,并带有指向每个硬盘的UpdateView的链接。

我希望能够点击其中一个硬盘的链接,在UpdateView中对其进行更改,然后重定向回DeleteView以“再次检查列表”。

这是我到目前为止(媒体=硬盘/存储媒体)

class MediaEdit(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
model = Media
form_class = MediaForm
template_name = 'dsl/media/media_create-edit.html'
success_message = 'Media successfully changed!'

def get_success_url(self):
    return reverse('dsl:media_edit', kwargs={'pk': self.get_object().id})

def get_context_data(self, **kwargs):
    context = super(MediaEdit, self).get_context_data(**kwargs)
    context['action'] = reverse('dsl:media_edit',
                                kwargs={'pk': self.get_object().id})
    next_url = self.request.GET.get('next', 'None')
    context['next_url'] = next_url
    return context

我尝试在UpdateView表单中使用“next_url”变量:

{% if next_url %}
<form class="" action="{{ next_url }}" method="post">
{% else %}
<form class="" action="{{ action }}" method="post">
{% endif %}

如果我将UpdateView窗体更改为“GET”,则next_url按预期工作,但它不会保存我在UpdateView中所做的更改。如果我使用“POST”,它会保存我的更改,但会在DeleteView中抛出ProtectedError。

我该如何使用?

0 个答案:

没有答案