扩展django注册RegisterForm类的正确方法
因此,我有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” 或者我没有显式创建的方法的名称。。。我是不是遗漏了什么 更新 我从中复制了第二个示例扩展django注册RegisterForm类的正确方法,django,django-forms,django-registration,Django,Django Forms,Django Registration,因此,我有django法规,我想延长表格的价格,以禁止在电子邮件已经使用的情况下进行注册-如何做到这一点 我有这个(嗯,我真的没有。我的笔记本电脑被我的女朋友强占去观看hulu上的声音,所以这是从内存和ipad上获得的): 我可以这么做吗?另外,我应该将此自定义表单粘贴到哪里?我想我没有把它放在django注册文件夹中,所以在我的应用文件夹中。。。我“打算”把它放在一个特定的文件夹里吗?如果我把它放在基础app_name文件夹中,然后调用is customRegistrationForm,这有关
这是一种享受。仍然不确定为什么扩展没有保留所有这些方法,或者如果我只是通过盲目复制代码破坏了某些东西-有什么想法吗?要扩展注册表以包含电子邮件,您必须首先扩展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