2016-12-03 63 views
2

我有我的表單,並且檢測到程序沒有進入is_valid(),因爲在提交之後,它將我重定向到welcomeUser.html,它位於if的其他部分:is_valid ()。我不知道還有什麼要嘗試。在此先感謝Django模板表單{is_valid()}

models.py

from django.db import models 


class User(models.Model): 

    user_name = models.CharField(max_length=10) 
    user_alias = models.CharField(max_length=10) 
    user_password = models.CharField(max_length=10) 
    user_community = models.CharField(max_length=10) 
    user_email = models.EmailField(max_length=10) 
    user_points = models.IntegerField(blank=True, null=True) 
    user_ratio = models.FloatField(blank=True, null=True) 

forms.py

from django.forms import ModelForm 
from models import User 


class UserForm(ModelForm): 

    class Meta: 

     model = User 
     exclude = ['user_points', 'user_ratio'] 

views.py

from django.shortcuts import render 
from django.shortcuts import render_to_response 
from django.http import HttpResponseRedirect 
from django.core.context_processors import csrf 
from django.template import RequestContext 

from models import User 
from forms import UserForm 


def signup(request): 

    if request.method == 'POST': 
     form_to_sign_up = UserForm(request.POST) 

     if form_to_sign_up.is_valid(): 
      new_user = form_to_sign_up.save() 
      new_user.save() 
      return HttpResponseRedirect('signupsuccess.html') 

     else: 
      return render_to_response('welcomeUser.html') 

    else: 

     form_to_sign_up = UserForm() 
     return render_to_response('sign_up.html', {'form': form_to_sign_up}, context_instance=RequestContext(request)) 


def signupsuccess(request): 

     users = User.objects.all() 
     return render_to_response('signupsuccess.html', {'users': users}) 

def home_user(request): 

    return render(request, 'home_user.html') 

sign_up.html

<form method="post">{% csrf_token %} 

       <div class="new_user_input"> 
        <label for="user_name">Nombre: </label> {{form.user_name}}    

       </div> 

       <div class="new_user_input"> 
        <label for="user_alias">Alias: </label> 
        {{form.user_alias}} 
       </div> 

       <div class="new_user_input"> 
        <label for="user_password">Contraseña: </label> 
        {{form.user_name}} 
       </div> 

       <div class="new_user_input"> 
        <label for="user_email">Email: </label> 
        {{form.user_email}} 
       </div> 

       <div class="new_user_input" id="save_save_button_sign_up_block"> 
        <button type="submit" class="save_button_sign_up">¡Registrar!</button> 
       </div> 

       {% csrf_token %} 
      </form> 
+0

嘗試刪除else塊並查看錶單是否顯示任何錯誤。 – neverwalkaloner

+0

您確定使用'POST'發送數據嗎?你能告訴我們你的HTML表單嗎? – ettanany

+0

爲什麼不使用['pdb'](https://docs.python.org/3.5/library/pdb.html)(或基本的'print')來檢查'form_to_sign_up.errors'的值?這可能有幫助。 – martinarroyo

回答

0

噢,我的上帝的錯誤是將.html我已經把user.name在密碼字段,而不是user.password的所以表單提交的信息user.password的後沒有給出這是爲什麼.is_valid()是假的!

謝謝大家的支持!