在验证之前从Django ModelForm中的字段获取值

时间:2016-06-26 20:25:45

标签: django django-forms

好吧,所以我有一个表格设置如下:

class LeadForm(forms.ModelForm):
    class Meta:
        model = Lead
        fields = ['email']

在我的观看中,我希望在验证之前获取用户放入字段的文本。

def index(request):
    if request.method == 'POST':
        lead_form = LeadForm(request.POST)

        // This is the problem part
        email = str(lead_form.fields['email'])
        print email
        if Lead.objects.get(email=email).exists():
            return HttpResponse('Already signed up')

        if lead_form.is_valid():
            // Do something
    else:
        lead_form = LeadForm()

    return render(request, 'myapp/index.html', {
        'lead_form' : lead_form,
    })

正如您所看到的,我正在尝试从电子邮件字段中获取文本,在验证之前,我想检查一下。当我打印电子邮件时,我在终端中收到了这封信:

<django.forms.fields.EmailField object at 0x109c35d90>

然而,我想要的是文本,因为我正在尝试查看是否存在该电子邮件的潜在客户。我怎样才能做到这一点?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

这是验证。它应该以表格形式完成;您可以在LeadForm上定义clean_email方法来执行此操作。

要回答您的实际问题,您可以根据需要直接访问request.POST['email']。但是不要这样做;在表格中做。

答案 1 :(得分:0)

试试这个,

email=request.POST.get('email')
print email