扩展django注册RegisterForm类的正确方法

扩展django注册RegisterForm类的正确方法,django,django-forms,django-registration,Django,Django Forms,Django Registration,因此,我有django法规,我想延长表格的价格,以禁止在电子邮件已经使用的情况下进行注册-如何做到这一点 我有这个(嗯,我真的没有。我的笔记本电脑被我的女朋友强占去观看hulu上的声音,所以这是从内存和ipad上获得的): 我可以这么做吗?另外,我应该将此自定义表单粘贴到哪里?我想我没有把它放在django注册文件夹中,所以在我的应用文件夹中。。。我“打算”把它放在一个特定的文件夹里吗?如果我把它放在基础app_name文件夹中,然后调用is customRegistrationForm,这有关

因此,我有django法规,我想延长表格的价格,以禁止在电子邮件已经使用的情况下进行注册-如何做到这一点

我有这个(嗯,我真的没有。我的笔记本电脑被我的女朋友强占去观看hulu上的声音,所以这是从内存和ipad上获得的):

我可以这么做吗?另外,我应该将此自定义表单粘贴到哪里?我想我没有把它放在django注册文件夹中,所以在我的应用文件夹中。。。我“打算”把它放在一个特定的文件夹里吗?如果我把它放在基础app_name文件夹中,然后调用is customRegistrationForm,这有关系吗

干杯! 安德鲁

更新

好的,我已经计算出要“覆盖”django中的内容,我需要将类放在init.py中,如果我想拾取子文件夹,它需要自己的init.py文件

“文件夹”init.py文件可以为空

不知道为什么这可能是python的东西?此外,不确定是否可以将customRegisterForm.py放在文件夹中的单独文件中,或者是否需要放在init

不管怎么说,接下来的问题是,覆盖似乎并不像我想象的那样起作用

在Java中,当我扩展一个类时,所有非私有成员的类都是可访问的,它们的行为与父类中定义的完全相同。 在django,我得到了很多

“customRegistrationForm”对象没有属性“get\u form\u class”

或者我没有显式创建的方法的名称。。。我是不是遗漏了什么

更新

我从中复制了第二个示例


这是一种享受。仍然不确定为什么扩展没有保留所有这些方法,或者如果我只是通过盲目复制代码破坏了某些东西-有什么想法吗?

要扩展注册表以包含电子邮件,您必须首先扩展UserCreationForm以包含电子邮件字段。您可以创建一个名为forms.py的文件来包含该特定应用程序所需的所有表单,但根据我的经验,您不必经常使用init.py

以下是一个示例,说明如何扩展注册表以包含电子邮件:

from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User

class RegisterForm(UserCreationForm):
    email = forms.EmailField(label="E-Mail")    

    class Meta:
        model = User
        fields = ("username", "email", )

    def clean_email(self):
        email = self.cleaned_data["email"]

        try:
        User.objects.get(email=email)
        except User.DoesNotExist:
        return email

        raise forms.ValidationError("A user with that email address already exists.")
看看这个Django教程,它很好地概括了这个过程。

查看注册表单Uniquee邮件表单。它是django registration的一个内置类,由它来完成这项工作

from registration.forms import RegistrationFormUniqueEmail

您应该学习Python教程。所有这些都是标准的Python内容。
from registration.forms import RegistrationFormUniqueEmail