Уведомления

Группа в Telegram: @pythonsu

#1 Май 17, 2013 11:58:41

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Расширение класса User и UserCreationForm

Всем доброго времени суток, обращаюсь к вам за помощью.
Проблема такая: решил расширить юзера, добавил поле - nickname(поле выбрано в качестве тестового, суть в том, что бы просто научиться добавлять поля. какие - не важно):

#models.py

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True, related_name='profile')
    nick_name = models.CharField(max_length=15)

Затем расширил UserCreationForm, что бы можно было вводить данные в новое поле при регистрации:
#views.py
class MyRegisterForm(UserCreationForm):
    print "OK!"
    nick_name = forms.CharField(max_length=30, required=True, widget=forms.TextInput)
    print "Ook"
    class Meta:
        model = UserProfile
    def save(self, commit=True):
        if not commit:
            raise NotImplementedError("Can't create User and UserProfile without database save")
        print "Saving..."
        user = super(MyRegisterForm, self).save(commit=False)
        user.nick_name = self.cleaned_data["nick_name"]
        user_profile = UserProfile(user=user, nick_name=self.cleaned_data['nick_name'])
        user_profile.save()
        print "Saving complete"
        return user, user_profile

Сама функция регистрации:
#views.py
def reg(request):
    if request.method =='POST':
        form = MyRegisterForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            print username
            password1 = form.cleaned_data['password1']
            print password1
            password2 = form.cleaned_data['password2']
            print password2
            nick_name = form.cleaned_data['nick_name']
            print nick_name
            form.clean_username()
            if password1 == password2:
                new_user = form.save()
                return render_to_response('registration/registration_complete.html')
            else:
                print "Password error"
                return render_to_response('registration/registration_fail.html')
        else:
            print "FORM error" #ТУТ ВАЛИТСЯ :(
            return render_to_response('registration/registration_fail.html')
    else:
        form = UserCreationForm() # An unbound form
    return render_to_response('registration/registration_new_user.html', {
        'form': form,
        },context_instance=RequestContext(request))

В настройки добавил:
#settings.py
AUTH_PROFILE_MODULE = 'registration.UserProfile'

Шаблон регистрации:
#registration_new_user.html
{% extends "base.html" %}
{% block content %}
  <h1>Регистрация пользователя</h1>
  <form action="registration" method="post">
    {% if form.error_dict %}
      <p class="error">Пожалуйста исправьте нижеприведённые ошибки.</p>
    {% endif %}
    {% if form.username.errors %}
      {{ form.username.html_error_list }}
    {% endif %}
    <label for="id_username">Логин:</label><br> {{ form.username }}<br>
    {% if form.password1.errors %}
      {{ form.password1.html_error_list }}
    {% endif %}
    <label for="id_password1">Пароль:</label><br> {{ form.password1 }}<br>
    {% if form.password2.errors %}
      {{ form.password2.html_error_list }}
    {% endif %}
    <label for="id_password2">Пароль (повторите):</label><br> {{ form.password2 }}<br>
    {% if form.nick_name.errors %}
      {{ form.nick_name.html_error_list }}
    {% endif %}
    <label for="id_nick_name">Пароль (повторите):</label><br> {{ form.nick_name }}<br>
      <br>
    <input type="submit" value="Зарегистрировать" />
  </form>
{% endblock %}

В итоге:
-при регистрации форма спотыкается на if form.is_valid()
-в шаблоне поле так же не отображается

Помогите советом, пожалуйста.
Заранее благодарен.



Офлайн

#2 Май 18, 2013 01:56:57

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Расширение класса User и UserCreationForm

lov3catch
Помогите советом, пожалуйста.
First of all , what is error do you get

lov3catch
#ТУТ ВАЛИТСЯ :(
We don't understand some words like: “ТУТ ” , could you please to submit more details about that error, if you'd like.

Thanks

Отредактировано romankrv (Май 18, 2013 01:59:36)

Офлайн

#3 Май 18, 2013 11:53:44

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Расширение класса User и UserCreationForm

romankrv
We don't understand some words like: “ТУТ ” , could you please to submit more details about that error, if you'd like.
Code crash in this plase.

if form.is_valid() = False
And I don`t understand where problem.

Thanks



Отредактировано lov3catch (Май 18, 2013 11:55:58)

Офлайн

#4 Май 18, 2013 12:39:59

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Расширение класса User и UserCreationForm

lov3catch
Code crash in this plase.
Please, give us a traceback from here, if you have it., because there are 90% that allows us to get solution for fix.

Thanks

Офлайн

#5 Май 18, 2013 14:08:01

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Расширение класса User и UserCreationForm

No traceback, just redirect after:

if form.is_valid():
...
else:
   print "FORM error"
   return render_to_response('registration/registration_fail.html')



Офлайн

#6 Май 18, 2013 19:59:45

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Расширение класса User и UserCreationForm

Ok man, if you get some redirect than check your logic in there -
render_to_response - Is this function not work as you expect or what is going on there.
Maybe your form is not valid, please check it.

Luck for you.

Офлайн

#7 Май 18, 2013 20:03:38

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Расширение класса User и UserCreationForm

Yes, form is not valid.
But I don`t now how I can fix it.



Офлайн

#8 Май 18, 2013 20:08:42

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Расширение класса User и UserCreationForm

Could you please to read django documentation about forms and how to deal with that. If you'd like because this is a first step is useful for you. Did you read about it early?

Luck

Отредактировано romankrv (Май 18, 2013 20:09:19)

Офлайн

#9 Май 18, 2013 20:15:33

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Расширение класса User и UserCreationForm

Reading…
thx you, if I search problem - I continue this topic.



Офлайн

#10 Май 20, 2013 10:13:51

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Расширение класса User и UserCreationForm

I got the error

Exception at /registration
<ul class=“errorlist”><li>user<ul class=“errorlist”><li>This field is required.</li></ul></li></ul>

But, I don`t have a user field.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version