django - 扩展 django-registration RegisterForm 类的正确方法

标签 django django-forms django-registration

所以我有 django regustration,amd 我想延长表单的验证时间,以禁止在电子邮件已在使用的情况下进行注册 - 有什么方法可以做到这一点?

我有这个(嗯,我真的没有。我的笔记本电脑已被我的女朋友征用在 hulu 上观看《好声音》,所以这是凭内存在我的 ipad 上):

import django-registration.registrationForm

class customRegistrationForm(form.RegistrationForm):
    def clean_email(self):
        #check here like the one for username!

我可以这样做吗?另外,我应该把这个自定义表格贴在哪里?我假设我没有将其与 django-registration 文件夹放在一起,所以在我的应用程序文件夹中...我是否“打算”将其放在特定文件夹中?如果我只是将其粘贴在基本 app_name 文件夹中并调用 customRegistrationForm,这有什么关系吗?

干杯! 安德鲁

更新

好的,所以我已经弄清楚要“覆盖”django 中的内容,我需要将类放入 init.py 中,如果我想选取一个子文件夹,它需要自己的 init.py 文件

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

不知道为什么会这样,大概是Python的事情?另外,不确定是否可以将 customRegisterForm.py 放在文件夹中的单独文件中,或者是否需要将其放在 init.py

无论如何,下一步是覆盖似乎并不像我想象的那样工作。

在 Java 中,当我扩展一个类时,该类的所有非私有(private)成员都可以访问,并且其行为与父类中定义的完全相同。 在 django 中,我得到了很多

'customRegistrationForm' object has no attribute 'get_form_class'

或者我没有明确创建的方法的名称...我在覆盖中遗漏了一些东西吗?

已更新更新

我复制了第二个示例

http://pbjots.blogspot.com/2012/01/customising-django-registration-no.html

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

最佳答案

要扩展注册表以包含电子邮件,您必须首先扩展 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 教程,它很好地概述了该过程。 https://docs.djangoproject.com/en/1.4/intro/tutorial01/

关于django - 扩展 django-registration RegisterForm 类的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507238/

相关文章:

python - Django 管理设置

django - 如何从 Django 中的 UserCreationForm 中删除用户名字段

python - 如何在 Django 中分别获取当前日期和当前时间?

python - 如何使用 Django 在模型对象中分配项目?

python - 在 django 表单中多次重复单个字段

python - Django - 如何预填充管理表单字段

django - 将项目值更改记录到 Django 对象

python - Django: 'str'对象在删除具有外键关系的模型时不可调用

django - 如何创建 Django 管理只读文本区域字段

python - django-registration:由于密码字符无效,中国用户无法注册