[英]Django 1.10 error, 'NoneType' object is not callable
我正在尝试为Django项目构建用户注册页面。
我有一个名为custom_user的应用程序,其中的models.py文件包含以下内容(除了导入):
class CustomUserManager(BaseUserManager):
def create_user(self, identifier, password, email, full_name, date_of_birth):
user = self.model(
identifier=identifier,
email=self.normalize_email(email),
full_name=full_name,
date_of_birth=date_of_birth
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, identifier, password, email, full_name, date_of_birth):
# Almost same as previous method.
class CustomUser(AbstractBaseUser, PermissionsMixin):
objects = CustomUserManager()
USERNAME_FIELD = 'identifier'
identifier = models.CharField(max_length=40, unique=True)
email = models.EmailField(max_length=200, unique=True)
full_name = models.CharField(max_length=200)
date_of_birth = models.DateField()
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
REQUIRED_FIELDS = ['full_name', 'email', 'date_of_birth']
def get_full_name(self):
return self.full_name
def get_short_name(self):
return self.identifier
在另一个名为sign_up的应用程序中,用于注册的视图如下所示:
def index(request):
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
# Create the new user.
manager = CustomUserManager()
user = manager.create_user(
form.cleaned_data['identifier'],
form.cleaned_data['password'],
form.cleaned_data['email'],
form.cleaned_data['full_name'],
form.cleaned_data['date_of_birth'],
)
return HttpResponseRedirect(reverse('sign_up:user_created'))
else:
form = CreateUserForm()
return render(request, 'sign_up/index.html', {'form': form})
views.py文件导入CreateUserForm
类(放置在sign_up目录的forms.py中 ):
from django.forms import ModelForm
from custom_user.models import CustomUser
class CreateUserForm(ModelForm):
class Meta:
model = CustomUser
fields = ['identifier', 'password', 'email', 'full_name', 'date_of_birth']
...最后,该视图使用的模板包含:
<h1>Welcome to the signup page!</h1>
<form action="{% url 'sign_up:index' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Sign up" />
</form>
提交表单后(并且form.is_valid()
似乎返回True
), / sign_up /'NoneType'对象上的错误消息TypeError不能调用,而不是显示user_created视图。
追溯:
内部39中的文件“ /Users/carltiden/anaconda/lib/python2.7/site-packages/django/core/handlers/exception.py”。response = get_response(request)
_get_response 187中的文件“ /Users/carltiden/anaconda/lib/python2.7/site-packages/django/core/handlers/base.py”。response = self.process_exception_by_middleware(e,request)
_get_response 185中的文件“ /Users/carltiden/anaconda/lib/python2.7/site-packages/django/core/handlers/base.py”。response = wrapd_callback(request,* callback_args,** callback_kwargs)
索引24中的文件“ /Users/carltiden/GitHub/a_project/a_project/sign_up/views.py”。form.cleaned_data ['date_of_birth'],
create_user 15中的文件“ /Users/carltiden/GitHub/a_project/a_project/custom_user/models.py”。date_of_birth = date_of_birth
异常类型:/ sign_up /处的TypeError异常值:'NoneType'对象不可调用
(第15行是实际代码中的date_of_birth=date_of_birth
行。)为什么会这样;为什么? 我在这里做错了什么?
那根本不是您使用经理的方式。 您永远不会在模型定义之外自己实例化它们。 您可以通过模型本身访问它们。
if form.is_valid():
user = CustomUser.objects.create_user(
form.cleaned_data['identifier'],
form.cleaned_data['password'],
form.cleaned_data['email'],
form.cleaned_data['full_name'],
form.cleaned_data['date_of_birth'],
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.