views:

65

answers:

2

urls.py

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

{'form_class':RegForm},name='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>

**

While saving Full Name: |_| Enter a valid value.

**

A: 

I think you have a bigger problem, and that is that you're assuming that a person has one first name and one last name, separated by a space. First names such as Anne Marie have a space in them. Why not just ask them for a first name and last name? That's pretty standard on web forms.

Ellie P.
I could but that is client requirement.. and as we know we already have the first_name and last_name in auth.User model. I tried to save those field by creating my class RegForm(RegistrationForm): in that i define first_name field and passing this form to def register(form=RegForm) all field are saving for eg username,email,pwd except that field(first_name) is not saving to database.
Praveen
A: 

The problem is that your form is missing first_name and last_name fields, so while saving it doesn't even look for these values. You can fill those values manually after saving the form, but you can do that only if form validates- at least in Firefox regexp testing tool your regex fails on "Anne Marie"- try changing it to ^[\w ]+$ After your form validates, you can save first name and last name like this:

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()

This code of course should go in form's save method, but for a fast test it's ok.

fest
Hi fest, no its not working.i gave your way not worth. While filling the registration form all fields are saving except first_name and last_name.I tried in this way look at my previous comment below.Thanks
Praveen
Oops, there should have been new_user.save() at the bottom of that code. Please try it now.
fest
Many thanks fest.. many many thanks
Praveen