我很想知道我的forms.py中的model = User
行是什么,所以我决定将其评论出来。结果是这个错误:
ModelForm has no model class specified.
并在views.py
args['form'] = MyRegistrationForm()
我仍然不太确定model = User
如何在我的自定义用户注册表单中播放。 (我一直在关注教程)。我想知道是否有人可以简要地向我解释整个过程以及为什么需要model = User
我的猜测是该模型现在是User
个对象。另外args['form'] = MyRegistrationForm()
需要是模型对象,否则代码将崩溃。就我的假设而言。
我的views.py:
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.contrib import auth
from django.core.context_processors import csrf
from forms import MyRegistrationForm
def register_user(request):
if request.method == 'POST':
form = MyRegistrationForm(request.POST) # create form object
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
args = {}
args.update(csrf(request))
args['form'] = MyRegistrationForm()
print args
return render(request, 'register.html', args)
my forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class MyRegistrationForm(UserCreationForm):
email = forms.EmailField(required = True)
first_name = forms.CharField(required = False)
last_name = forms.CharField(required = False)
birthday = forms.DateField(required = False)
class Meta:
#model = User
fields = ('email', 'username', 'password1', 'password2', 'last_name', 'first_name', 'birthday') # set up ordering
def save(self,commit = True):
user = super(MyRegistrationForm, self).save(commit = False)
user.email = self.cleaned_data['email']
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.birthday = self.cleaned_data['birthday']
if commit:
user.save()
return user
答案 0 :(得分:1)
我仍然不太确定模特=用户如何在我的游戏中播放 自定义用户注册表。
您的表单继承自django.contrib.auth.forms.UserCreationForm
ModelForm
。
我想知道是否有人可以简要向我解释这一切 过程以及为什么模型=需要用户
模型表格在此处记录:https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/
作为旁注,如果您从Meta
继承了表单UserCreationForm.Meta
,则无需再次指定模型。
我的猜测是该模型现在是一个User对象。
User
是一个班级。
此外,args ['form'] = MyRegistrationForm()需要是一个模型对象 否则代码会崩溃。就我的假设而言。
不要假设:阅读文档,然后阅读代码(记住,它是开源软件)。