Я пытаюсь создать страницу регистрации пользователя для проекта Django.Ошибка Django 1.10, объект «NoneType» не может быть вызван
У меня есть приложение под названием 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 файл импортируеткласс (помещается в 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
), сообщение об ошибке TypeError at/sign_up/'NoneType' объект не может быть вызван отображает вместо user_created вид.
Traceback:
Файл "/Users/carltiden/anaconda/lib/python2.7/site-packages/django/core/handlers/exception.py" во внутреннем 39. ответ = get_response (запрос)
Файл "/Users/carltiden/anaconda/lib/python2.7/site-packages/django/core/handlers/base.py" в _get_response 187. ответа = self.process_exception_by_middleware (e, запрос)
Файл "/Users/carltiden/anaconda/lib/python2.7/site-packages/django/core/handlers/base.py" в _get_response 185. ответ = wrapped_callback (запрос, * callback_args ** callback_kwargs)
Файл "/Users/carltiden/GitHub/a_project/a_project/sign_up/views.py" в индексных 24. form.cleaned_data [ 'date_of_birth'],
File «/ Users/carltiden/GitHub/a_project/a_project/custom_user/models.py "в create_user 15. date_of_birth = date_of_b Irth
Тип исключения: TypeError в/sign_up/Exception Значение: '' NoneType объект не вызываемая
(. Линия 15 является date_of_birth=date_of_birth
линия фактического кода) Почему это происходит; что я делаю неправильно здесь?