我正在为我的网站创建一个注册表单。
我只使用username, email, password
对象中User
的标准字段条目。
已创建数据库表。
Models.py
class RegistrationForm(ModelForm):
class Meta:
model = User
views.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)
是models.py?{/ p>中RegistrationForm()
的一部分
此外:如何在forms.py中的User
中正确表示此默认模型(modelform
)?
答案 0 :(得分:1)
回答你的第二个问题:
使用UserCreationForm
来表示User
类的注册过程,它会为您处理验证和保存,您可以随时对其进行扩展(即添加电子邮件字段)
User
类有很多相关的表单,具体取决于用例:身份验证,注册,密码更改等。阅读有关身份验证的文档以查找更多内容。
https://docs.djangoproject.com/en/1.5/topics/auth/default/#module-django.contrib.auth.forms
答案 1 :(得分:0)
您可以使用cleaning_date从表单中获取经过验证的数据:
username = form.cleaned_data['username']
email = form.cleaned_data['email']
password = form.cleaned_data['password']
newUser = User.objects.create_user(username, email, password)
现在我认为您的方法存在严重问题,因为您在创建用户对象后再次保存表单,User对象也希望密码字段是密码的哈希值和一些元数据等。 我强烈建议您使用django-registration(或者至少看看它)除了电子邮件验证之外还为您处理所有这些内容,您只需提供模板(还可以找到一些模板)它像this)