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

<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字典中. 我还能拿到纽扣的值吗?

推荐答案

您可以在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

Django相关问答推荐

如何在Django中更改模型字段名称?

从Azure Web应用服务器上的cron任务的虚拟环境加载变量

int_list_validator在 Django 表单中不起作用

在 Django 中处理信用卡付款的最佳 Select 是什么?

Django 有脚手架吗?

DeleteView 中的success_message 未显示

如何判断 Python unicode 字符串是否包含非西方字母?

获取 Django 表单中的错误列表

如何以编程方式对 Django 中的用户进行身份验证?

如何在不同的元素上添加注释?

响应发送到客户端后在 Django 中执行代码

在 Django shell 启动时自动导入模型

如何在 django 中捕获UNIQUE constraint failed404

找不到 msguniq.确保您安装了 GNU gettext 工具 0.15 或更新版本. (Django 1.8 和 OSX ElCapitan)

在 Django REST 框架序列化程序中动态排除或包含字段

如何在 Python 中运行另一个脚本而不等待它完成?

AttributeError:ManyRelatedManager对象没有add属性?

如何更改 ModelForm 中所有 Django 日期字段的默认小部件?

APIView 类和视图集类之间的区别?

Django的不区分大小写的网址?