有Django表单的问题

时间:2014-06-25 06:05:38

标签: python django python-2.7 django-models django-forms

我刚刚开始使用Django进行开发,我在使用已创建的表单时遇到了一些问题。

目前我有一个名为 SignUp 的模型,它允许用户注册"在网站上输入他们的姓名和电子邮件地址。

我尝试实施的功能会删除已提交其注册的电子邮件地址的用户已注册的用户。

我的表单设置只是一个简单的电子邮件字段,但我似乎无法弄清楚如何让我的视图将表单与用户匹配,然后成功删除用户数据库。

以下是表单的代码:

class DeleteUserForm(forms.Form):
    email_address = forms.EmailField()

以下是视图的代码:

class DeleteUserView(generic.edit.FormView):
    template_name = 'signups/delete_user_form.html'
    form_class = DeleteUserForm
    success_url = '/users/delete/success/'

    def form_valid(self, form):

        for user in SignUp.objects.all():
            if user.email == form:    # The email attribute holds the user's
                user.delete()         # email address and the form should be
                                      # the address the user submitted to be
                                      # deleted?
                return redirect(self.success_url)

        return redirect('/users/delete/failure/')

每当我尝试提交电子邮件地址时,我都没有匹配,没有用户被删除,而我只是被重定向到我的失败目录。

任何人都知道发生了什么? 感谢

3 个答案:

答案 0 :(得分:0)

最简单的解决方案:

duplicates = SignUp.objects.filter(email=form.cleaned_data['email_address'])

if duplicates:
    duplicates.delete()

    return redirect(self.success_url)

return redirect('/users/delete/failure/')

是的,修正了关系查找。

答案 1 :(得分:0)

使用Kamil的逻辑,我重写了字段查找,这段代码可以工作:

duplicates = SignUp.objects.filter(email__iexact=form.cleaned_data['email_address'])
    if duplicates:
        duplicates.delete()
        return redirect(self.success_url)

但有人知道为什么我以前使用的代码不起作用吗?

答案 2 :(得分:0)

您可以通过form.cleaned_data词典访问字段值:

if user.email == form.cleaned_data['email_address']: