Полное имя при регистрации - PullRequest
0 голосов
/ 17 января 2010

urls.py

   url(r'^accounts/register/$',register,

{ 'form_class': RegForm}, имя = 'registration_register'),

form.py

 from registration.forms import *
 class RegForm(RegistrationForm):
    """
    """
    fullname = forms.RegexField(regex=r'^\w+$',
                                  max_length=30,
                                  widget=forms.TextInput(attrs=attrs_dict),
                                  label=_(u'fullname'))
 def clean_fullname(self):
   return self.cleaned_data['fullname']

 def clean(self):
   if not self.errors:
    self.cleaned_data['first_name']='%s'(self.cleaned_data['fullname'].split('')[0])
    self.cleaned_data['last_name'] = '%s'(self.cleaned_data['fullname'].split('')[1])
    super(RegForm, self).clean()
          return self.cleaned_data'''

views.py

 def register(request, success_url=None,
               form_class=RegForm, profile_callback=None,
               template_name='registration/registration_form.html',
               extra_context=None):
      #pform_class = utils.get_profile_form()
   if request.method == 'POST':
     #profileform = pform_class(data=request.POST,files=request.FILES)
     form = form_class(data=request.POST,files=request.FILES)
     if form.is_valid():
       new_user = form.save(profile_callback=profile_callback)
       #profile_obj = profileform.save(commit=False)
       #profile_obj.user = new_user
       #profile_obj.save()
       return HttpResponseRedirect(success_url or reverse('registration_complete'))
     else:
       form = form_class()
       #profileform = pform_class()
     if extra_context is None:
          extra_context = {}
     context = RequestContext(request)
     for key, value in extra_context.items():
          context[key] = callable(value) and value() or value
     return render_to_response(template_name,{'form':form},context_instance=context)

registration_form.html

 <dl class="vertical">
 <dt><label class="required"for="fullname">Full Name</label></dt>
 <dd>
  <div class="formHelp"></div>
      {{ form.fullname }}
      {% for error in form.fullname.errors%}
         <span style="color:red">{{ error }}</span>
       {% endfor %}
 </dd>
 <dt><label class="required" for="username">User Name</label></dt>
    <dd>
    <div class="formHelp"></div>
       {{ form.username }}
       {% for error in form.username.errors%}
         <span style="color:red">{{ error }}</span>
       {% endfor %}
    </dd>
 <dt><label class="required" for="email">Email Address</label></dt>
    <dd>
    <div class="formHelp"></div>
        {{ form.email }}
         {% for error in form.email.errors %}
          <span style="color:red">{{ error }}</span>
         {% endfor %}
     </dd>
 <dt><label for="password"class="required">Password</label></dt>
     <dd>
     <div class="formHelp"></div>
         {{ form.password1 }}
          {% for error in form.password1.errors %}
              <span style="color:red">{{ error }}</span>
          {% endfor %}
     </dd>
 <dt><label for="password2"class="required">Confirm Password</label></dt>
     <dd>
     <div class="formHelp"></div>
         {{ form.password2 }}
          {% for error in form.password2.errors %}
              <span style="color:red">{{ error }}</span>
          {% endfor %}
     </dd>

**

при сохранении Полное имя: | _____ | Введите действительное значение.

**

Ответы [ 2 ]

0 голосов
/ 17 января 2010

Проблема в том, что в вашей форме отсутствуют поля first_name и last_name, поэтому при сохранении она даже не ищет эти значения. Вы можете заполнить эти значения вручную после сохранения формы, но вы можете сделать это только в том случае, если форма проверяется - по крайней мере, в инструменте тестирования регулярных выражений Firefox ваше регулярное выражение завершается ошибкой в ​​«Anne Marie» - попробуйте изменить его на ^[\w ]+$ После проверки формы вы можете сохранить имя и фамилию следующим образом:

if form.is_valid():
    new_user = form.save(profile_callback=profile_callback)
    new_user.first_name = form.cleaned_data['first_name']
    new_user.last_name = form.cleaned_data['last_name']
    new_user.save()

Этот код, конечно, должен идти в методе сохранения формы, но для быстрого теста это нормально.

0 голосов
/ 17 января 2010

Я думаю, что у вас есть большая проблема, и вы предполагаете, что у человека есть одно имя и одна фамилия, разделенные пробелом. В именах, таких как Анна Мари, есть пробел. Почему бы просто не спросить их имя и фамилию? Это довольно стандартно для веб-форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...