2012-04-19 44 views
0

這裏註冊表格每次我輸入任何數據什麼都沒有發生,除了頁面重新加載和密碼和驗證密碼是空的即使我沒有寫他們通常是相同的raise.ValidationError不顯示任何建議?我想建立一個由Django使用forms.py

Views.py

from django.contrib.auth.models import User 
    from django.http import HttpResponse 
    from django.http import HttpResponseRedirect 
    from django.shortcuts import render_to_response 
    from shoghlanah.forms import SignUpForm 
    from django.template import RequestContext 
    from django.views.decorators.csrf import csrf_exempt 
    from django.contrib.auth import authenticate, login 
    from django.contrib.auth import logout 
    from shoghlanah.models import * 



    def EmployerRegistration(request): 
     if request.user.is_authenticated(): 
      return HttpResponseRedirect('/profile/') 
     if request.method == 'POST': 
      form = SignUpForm(request.POST) 
      if form.is_valid(): 
       user=User.objects.create_user(username=form.cleaned_data["username"],password= form.cleaned_data['password'],first_name=form.cleaned_data['first_name'],last_name=form.cleaned_data['last_name'],email=form.cleaned_data['email'],address=form.cleaned_data['address'],mobile=form.cleaned_data['mobile']) 
       user.save() 
       employer =Employer(user=user,first_name=form.cleaned_data['first_name'],last_name=form.cleaned_data['last_name'],email=form.cleaned_data['email'],address=form.cleaned_data['address'],mobile=form.cleaned_data['mobile']) 
       employer.save() 
       #Employer=user.get_profile() 
       #Employer.first_name=form.cleaned_data['first_name'] 
       #Employer.last_name=form.cleaned_data['last_name'] 
       #Employer.address=form.cleaned_data['address'] 
       #Employer.mobile =form.cleaned_data['mobile'] 
       #Employer.save() 
      return HttpResponseRedirect('/login/') 

      #else: 
      # return render_to_response('Sign_up_Employer.html',{'form':form},context,context_instance=RequestContext(request)) 

     else: 
     #user is not submitting show them the registeration form 
       form= SignUpForm() 
       context = {'form':form} 
       return render_to_response('Sign_up_Employer.html',context,context_instance=RequestContext(request)) 

forms.py

from django.contrib.auth.forms import UserCreationForm 
from django.contrib.auth.models import User 
from django import forms 
from django.forms import ModelForm 
from shoghlanah.models import * 


class SignUpForm(ModelForm): 
    username  = forms.CharField(label=(u'Username')) 
    first_name = forms.CharField(label=(u'First name')) 
    last_name  = forms.CharField(label=(u'Last name')) 
    address  = forms.CharField(label=(u'Address')) 
    email   = forms.EmailField(label=(u'Email Address')) 
    password  = forms.CharField(label=(u'Password'),widget=forms.PasswordInput(render_value=False)) 
    password1  = forms.CharField(label=(u'Verify Password'),widget=forms.PasswordInput(render_value=False)) 
    mobile  = forms.IntegerField(label=(u'Mobile')) 

    class Meta: 
     model = Employer 

     exclude =('user',) 

    def clean_username(self): 
     username = self.cleaned_data['username'] 
     try: 
      User.objects.get(username=username) 
     except User.DoesNotExist: 
      return username 

      raise forms.ValidationError("That username already exists. Please select another") 




    def clean(self): 
     if self.cleaned_data['password'] != self.cleaned_data['password1']: 
       raise forms.ValidationError("not matched") 
     return self.cleaned_data 

sign_up_Employer.html

{%block content%} 
<form action ="" method ="post"> 
{% csrf_token %} 
{% if form.errors %}<p>Please Correct </p> {% endif %} 
<div class ="register_div"> 
{%if form.username.errors%}<p class= "error">{{form.username.errors}}</p>{% endif %} 
<p> <label for ="username"{% if form.username.errors %} class= "error"{% endif %}> Username</label></p> 
<p>{{form.username}}</p> 
</div> 
<div class ="register_div"> 
{%if form.first_name.errors%}<p class= "error">{{form.first_name.errors}}</p>{% endif %} 
<p> <label for ="first_name"{% if form.first_name.errors %} class= "error"{%endif%}>First name</label></p> 
<p>{{form.first_name}}</p> 
</div> 
<div class ="register_div"> 
{%if form.last_name.errors%}<p class= "error">{{form.last_name.errors}}</p>{% endif %} 
<p> <label for ="last_name"{% if form.last_name.errors %} class= "error"{%endif%}>Last name</label></p> 
<p>{{form.last_name}}</p> 
</div> 
<div class ="register_div"> 
{%if form.address.errors%}<p class= "error">{{form.address.errors}}</p>{% endif %} 
<p> <label for ="address"{% if form.address.errors %} class= "error"{%endif%}>Address'</label></p> 
<p>{{form.address}}</p> 
</div> 
<div class ="register_div"> 
{%if form.email.errors%}<p class= "error">{{form.email.errors}}</p>{% endif %} 
<p> <label for ="email"{% if form.email.errors %} class= "error"{%endif%}>Email Address</label></p> 
<p>{{form.email}}</p> 
</div> 
<div class ="register_div"> 
{%if form.password.errors%}<p class= "error">{{form.password.errors}}</p>{% endif %} 
<p> <label for ="password"{% if form.password.errors %} class= "error"{%endif%}>Password</label></p> 
<p>{{form.password}}</p> 
</div> 

<div class ="register_div"> 
{%if form.password1.errors%}<p class= "error">{{form.password1.errors}}</p>{% endif %} 
<p> <label for ="password1"{% if form.password1.errors %} class= "error"{%endif%}>Verify Password</label></p> 
<p>{{form.password1}}</p> 
</div> 

<div class ="register_div"> 
{%if form.mobile.errors%}<p class= "error">{{form.mobile.errors}}</p>{% endif %} 
<p> <label for ="mobile"{% if form.mobile.errors %} class= "error"{%endif%}>Mobile</label></p> 
<p>{{form.mobile}}</p> 
</div> 
<p><input type =submit alt =register></p> 
</form> 
{% endblock %} 

models.py

from django.db import models 
class Employer(models.Model):#Employer inherits from User 
    user = models.OneToOneField(User) 
    employer_verified = models.BooleanField(default=False) 
    profile_picture = models.ImageField(upload_to='ProfilePictureDB', null=False , blank=False) 
    #profile pictures will be uploaded to ProfilePictureDB 
    hidden_values = models.CharField(max_length=200) 
    #hidden_values will contain all the attributes that the employer/contractor wants to hide 
    signature = models.OneToOneField(Signature) 
    mobile = models.IntegerField(max_length=20) 
    address = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.name 
+3

*如果表單無效(無數據),您*告訴重定向登錄。如果表單無效,您應該重定向到註冊表單並顯示錯誤。如果form.is_valid():... else:... – 2012-04-19 14:24:42

+0

我是sry,但是如何在返回HttpResponseRedirect('/ login /')「後檢查form.is_valid():並將僱主保存在數據庫中或者我錯過了什麼? – May 2012-04-19 14:31:46

回答

1
if request.method == "POST": 

    if form.is_valid(): 
     # .... 
    return HttpResponseRedirect('/login/') # not indented 

返回is_valid()塊的縮進。所以,無論表單的有效性,POST都會重定向。更改爲

if request.method == "POST": 

    if form.is_valid(): 
     # .... 
     return HttpResponseRedirect('/login/') # indented 

更新:

def clean_username(self): 
    username = self.cleaned_data['username'] 
    try: 
     User.objects.get(username=username) 
    except User.DoesNotExist: 
     return username 

     raise forms.ValidationError("That username already exists. Please select another") 

這是錯誤的;你回來後不能加註。加註應該放在try塊中。

def clean_username(self): 
    username = self.cleaned_data['username'] 
    try: 
     User.objects.get(username=username) 
     raise forms.ValidationError("That username already exists. " 
            "Please select another") 
    except User.DoesNotExist: 
     return username 
+2

@Mai Zuhair這是我想解釋的。對不起,我沒有自己清楚 – 2012-04-19 14:37:22

+0

@skyl謝謝你! – May 2012-04-19 14:46:09

+1

@César謝謝你,不用擔心它是我的壞 – May 2012-04-19 14:47:20

相關問題