如何构建多个提交按钮Django表单?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我有一个电子邮件输入和两个提交按钮来订阅和取消订阅时事通讯的表单:

<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',)

我需要知道哪个按钮是由表单提交。但是提交按钮的值不在self.cleaned_data字典。否则我能得到按钮的值吗?

提问于
用户回答回答于

你可以用self.dataclean_email方法在验证之前访问POST数据。它应该包含一个名为newsletter_subnewsletter_unsub取决于按下哪个按钮。

# 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
用户回答回答于

例:

if 'newsletter_sub' in request.POST:
    # do subscribe
elif 'newsletter_unsub' in request.POST:
    # do unsubscribe

扫码关注云+社区