如何在Django表单中建立多个提交按钮

2024-05-13 10:58:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我必须写我自己的清洁电子邮件方法,我需要知道哪个按钮是提交的表格。但是submit按钮的值不在self.cleaned_data字典中。 否则我可以得到按钮的值吗?


Tags: nameform表单inputvalue电子邮件typeaction
3条回答

可以在验证前使用clean_email方法中的self.data访问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

你也可以这样做

 <form method='POST'>
    {{form1.as_p}}
    <button type="submit" name="btnform1">Save Changes</button>
    </form>
    <form method='POST'>
    {{form2.as_p}}
    <button type="submit" name="btnform2">Save Changes</button>
    </form>

代码

if request.method=='POST' and 'btnform1' in request.POST:
    do something...
if request.method=='POST' and 'btnform2' in request.POST:
    do something...

相关问题 更多 >