Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 第一次调用表单时禁用验证_Django_Forms_Validation - Fatal编程技术网

Django 第一次调用表单时禁用验证

Django 第一次调用表单时禁用验证,django,forms,validation,Django,Forms,Validation,我正在为我的Django表格挣扎。当我调用我的表单站点时,总是会出现验证错误(此字段是必需的)。如果一个字段没有像javascript函数那样填充,我希望在单击submit按钮后看到这条消息。此外,我使用正则表达式进行验证,这很好 我在CVBs工作。下面是一些代码: models.py class Institute(models.Model): name = models.CharField(max_length=50) timestamp = models.DateTime

我正在为我的Django表格挣扎。当我调用我的表单站点时,总是会出现验证错误(此字段是必需的)。如果一个字段没有像javascript函数那样填充,我希望在单击submit按钮后看到这条消息。此外,我使用正则表达式进行验证,这很好

我在CVBs工作。下面是一些代码:

models.py

 class Institute(models.Model):
    name = models.CharField(max_length=50)
    timestamp = models.DateTimeField(auto_now_add=True)  
views.py

class InstituteCreate(CreateView):
    model = Institute
    form_class = InstituteForm
    success_url = reverse_lazy('institute_list')
forms.py

class InstituteForm(forms.ModelForm):

    name= forms.CharField(error_messages={'required': 'Own Error Text'}, validators=[RegexValidator(regex='^[a-zA-ZäüößÄÜÖ]*$', message='forbidden string', code='string_invalid')])

    class Meta:
        model = Institute
        fields = ['name']
希望有人对如何修复它有想法

编辑1:

我的模板非常简单

{% block pagetitle %}Institutes{%endblock %}
{% block content %}
    <form class="form-horizontal" name="form_group" method="post">
        {% csrf_token %}
            <div>
                {{ form.as_p }}
            </div>
            <input class="btn btn-primary" type="submit" value="click me" />
    </form>
{% endblock %}
我是Django开发的新手,因此我将尝试更详细地解释这个问题:

在我的网站上,当我打开链接www.exampleurl.com/institute\u create时,会显示我的表单。然后我看到一个字段,我必须在其中输入研究所的名称。此字段上方显示文本“此字段为必填项”。但是我不想看到这个,直到我尝试提交一个空表单


当我输入一些不匹配的文本并按下“提交”按钮时,错误文本字段会按预期将其消息更改为禁止字符串。

除非您对视图使用POST请求,否则不会触发表单验证。代码中的其他地方可能存在错误,但是,您需要解决代码中的两个问题:

Python中的类应始终以大写字母开头,并遵循以下规则:

否则,就不可能分辨出类定义和类实例之间的区别,也就不太可能发生冲突


出于好奇,您是否在浏览器中看到HTML5验证错误与Django的错误?如果您能将模板代码添加到您的问题中,可能会有所帮助。

我知道这是一个非常古老的问题,但我看不出答案。我也是django的初学者,当我遇到同样的问题时,我正在学习django教程。 我是这样解决的:

if 'voteButton' in request.POST:
    context = {
        'question': question,
        'error_message': "You didn't select a choice"
    }
    return render(request, 'polls/details.html', context)
elif:
    # do something else. Display error message

voteButton是表单中“提交”按钮的名称。希望这有帮助!如果这种方法不正确,请务必告诉我。

正如Brandon提到的,您的表单会在POST请求中得到验证。因此,请确保在第一次访问页面时,表单不会绑定到POST请求

例如,不要这样做:

def寄存器(请求):
表单=注册表单(request.POST)
如果request.method==“POST”:
如果form.is_有效():
#做点什么
返回呈现(请求'register.html',{'form':form})
只有通过POST请求访问页面时,才应将表单绑定到POST请求。这将有助于:

def寄存器(请求):
如果request.method==“POST”:
表单=注册表单(request.POST)
如果form.is_有效():
#做点什么
其他:
表单=注册表单()
返回呈现(请求'register.html',{'form':form})

我不太清楚到底是什么问题。在提交表单之前不会进行验证,因此您的代码或模板中肯定存在问题。
class Institute(models.Model):
    name = models.CharField(max_length=50)

    # just use the built-in `auto_now_add` argument
    timestamp = models.DateTimeField(auto_now_add=True)

class InstituteCreate(CreateView):
    model = Institute
    form_class = InstituteForm
    success_url = reverse_lazy('institute_list')

class InstituteForm(forms.ModelForm):

    # All Django model/form fields are required by default, so you
    # can drop the `required=True` here
    name= forms.CharField(validators=[RegexValidator(regex='^[a-zA-ZäüößÄÜÖ]*$',
        message='forbidden string', code='string_invalid')])

class Meta:
    model = Institute
    fields = ['name']
if 'voteButton' in request.POST:
    context = {
        'question': question,
        'error_message': "You didn't select a choice"
    }
    return render(request, 'polls/details.html', context)
elif:
    # do something else. Display error message