2013-09-14 3 views
0

Я создаю регистрационную форму для своего сайта.Преобразование Django ModelForm для использования объекта пользователя

Я использую только стандартные поля ввода 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) 

которые входят в комплект RegistrationForm() в models.py?

Дополнительно: Как правильно представить эту модель по умолчанию (User) в modelform в forms.py?

ответ

1

Чтобы ответить на ваш второй вопрос:

Используйте UserCreationForm для представления процесса регистрации для User класса, он обрабатывает проверки и сохранения для вас, и вы всегда можете продлить его (т.е. для добавления поля электронной почты)

User класс имеет множество связанных форм, в зависимости от варианта использования: аутентификация, регистрация, изменение пароля и т. д. читайте документы по аутентификации, чтобы найти больше.

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

+0

Отличная ссылка здесь. Я дам этому вихрь. благодаря – CodeTalk

0

Вы можете получить проверенные данные из формы с помощью cleaned_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-registration (или, по крайней мере, взглянуть на него), который обрабатывает все это для вас в дополнение к проверке подлинности электронной почты, все, что вам нужно для создания шаблонов (а также вы можете найти некоторые шаблоны для него, например this)

Смежные вопросы