0

我正在为我的网站创建一个注册表单。

我只使用对象username, email, password中的标准字段条目User

数据库表已经创建。

模型.py

class RegistrationForm(ModelForm):
    class Meta:
        model = User

视图.py

def Registration(request):
    RegForm = RegistrationForm(request.POST or None)
    if request.method == 'POST':
        if RegForm.is_valid():
            newUser = User.objects.create_user(username, email, password)

            RegForm.save()
            try:
                return HttpResponseRedirect('/Newuser/?userNm=' + clearUserName)
            except:
                raise ValidationError(('Invalid request'), code='300')    ## [ TODO ]: add a custom error page here.

我的问题是,我如何表示这些字段:

username, email, password

在这一行(从视图):

newUser = User.objects.create_user(username, email, password)

这是RegistrationForm()models.py的一部分吗?

另外:我如何在forms.py中正确地表示这个默认模型( User) ?modelform

4

2 回答 2

1

回答你的第二个问题:

用于UserCreationForm表示User类的注册过程,它为您处理验证和保存,您可以随时扩展它(即添加电子邮件字段)

User类有很多相关的形式,具体取决于用例:身份验证、注册、密码更改等。阅读有关身份验证的文档以查找更多信息。

https://docs.djangoproject.com/en/1.5/topics/auth/default/#module-django.contrib.auth.forms

于 2013-09-14T17:54:25.283 回答
0

您可以使用 clean_date 从表单中获取经过验证的数据:

username = form.cleaned_data['username']
email = form.cleaned_data['email']
password = form.cleaned_data['password']

newUser = User.objects.create_user(username, email, password)

现在我认为您的方法存在严重问题,因为您在创建用户对象后再次保存表单,用户对象也希望密码字段是密码和一些元数据等的哈希值等。我强烈建议您使用django-注册(或至少看看它)除了电子邮件验证之外,它还为您处理所有这些事情,您只需要提供模板(您也可以像这样找到一些模板)

于 2013-09-14T17:46:59.023 回答