如何构建多个提交按钮 django 表单? [英] How can I build multiple submit buttons django form?

查看:43
本文介绍了如何构建多个提交按钮 django 表单?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表单,其中包含一个电子邮件输入和两个用于订阅和取消订阅时事通讯的提交按钮:

I have form with one input for email and two submit buttons to subscribe and unsubscribe from newsletter:

<form action="" method="post">
{{ form_newsletter }}
<input type="submit" name="newsletter_sub" value="Subscribe" />
<input type="submit" name="newsletter_unsub" value="Unsubscribe" />
</form>

我也有课表:

class NewsletterForm(forms.ModelForm):
    class Meta:
        model = Newsletter
        fields = ('email',)

我必须编写自己的 clean_email 方法,并且我需要知道表单是通过哪个按钮提交的.但是提交按钮的值不在 self.cleaned_data 字典中.否则我可以获得按钮的值吗?

I must write my own clean_email method and I need to know by which button was form submited. But the value of submit buttons aren't in self.cleaned_data dictionary. Could I get values of buttons otherwise?

推荐答案

您可以在 clean_email 方法中使用 self.data 来访问验证前的 POST 数据.它应该包含一个名为 newsletter_subnewsletter_unsub 的键,具体取决于按下的按钮.

You can use self.data in the clean_email method to access the POST data before validation. It should contain a key called newsletter_sub or newsletter_unsub depending on which button was pressed.

# in the context of a django.forms form

def clean(self):
    if 'newsletter_sub' in self.data:
        # do subscribe
    elif 'newsletter_unsub' in self.data:
        # do unsubscribe

这篇关于如何构建多个提交按钮 django 表单?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆