【问题标题】:Django model form {is_valid()}Django 模型形式 {is_valid()}
【发布时间】:2017-04-18 06:48:57
【问题描述】:

我有我的表单,但我检测到程序没有进入 is_valid(),因为提交后它会将我重定向到welcomeUser.html,它位于 if: is_valid() 的 else 中。我不知道还能尝试什么。提前致谢

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>

【问题讨论】:

  • 尝试删除 else 块并查看表单是否显示任何错误。
  • 您确定使用POST 发送数据吗?你能告诉我们你的 html 表单吗?
  • 为什么不使用pdb(或基本的print)来检查form_to_sign_up.errors 的值?这可能会有所帮助。
  • 我忘了包含 .html,但我在表单中使用了 POST 方法。我已经包含了。
  • 使用 form_to_sigh_up.error?我将能够确定为什么表格无效?谢谢你:)

标签: python django forms


【解决方案1】:

天哪,我的错误是在 .html 中我将 user.name 放在密码字段中,而不是 user.password 所以在提交表单后,没有给出 user.password 的信息,这就是为什么 .is_valid()是假的!

感谢大家的支持!

【讨论】:

    猜你喜欢
    • 2016-05-14
    • 2012-05-11
    • 2023-04-10
    • 2011-11-09
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多