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
Python Django:如果表单在base.html上无效,如何显示表单验证错误?_Python_Django_Django Forms - Fatal编程技术网

Python Django:如果表单在base.html上无效,如何显示表单验证错误?

Python Django:如果表单在base.html上无效,如何显示表单验证错误?,python,django,django-forms,Python,Django,Django Forms,我在base.html上有一个表单,因为我想在每个页面上显示它,我想在表单无效时显示验证错误,问题是它会将我重定向到我的视图,即使验证为false并抛出错误500 我是如何做到的:views.py forms.py: base.html: 由于无法在base.html上使用renderrequest,{…},如何解决此问题 我想返回到显示错误验证消息时用户所在的页面。您可以使用ajax requestjQuery发布数据。 这不会导致重新加载或重定向到另一个页面。 此外,如果表单中存在任何错误,

我在base.html上有一个表单,因为我想在每个页面上显示它,我想在表单无效时显示验证错误,问题是它会将我重定向到我的视图,即使验证为false并抛出错误500

我是如何做到的:views.py

forms.py:

base.html:

由于无法在base.html上使用renderrequest,{…},如何解决此问题


我想返回到显示错误验证消息时用户所在的页面。

您可以使用ajax requestjQuery发布数据。 这不会导致重新加载或重定向到另一个页面。 此外,如果表单中存在任何错误,也可以在前端验证。
如果表单是有效的,那么响应对象可以被操纵,不管你怎么想。

我就是这么想的!jqueryajax请求对于后台api调用更加灵活,在后台api调用中,UI不需要受到干扰。
def askProject(request):
    if request.method == 'POST':
        form = AskProjectForm(request.POST)
        if form.is_valid():
            form.save()

            return redirect(reverse('success-msg'))
    else:
        form = AskProjectForm()
class AskProjectForm(forms.ModelForm):
    class Meta:
        model = AskProject
        fields = ['prenom', 'nom', 'numero']

    def clean_prenom(self):
        prenom = self.cleaned_data['prenom']
        if len(prenom) < 3:
            raise ValidationError('Votre prénom doit etre plus long que 1 caractère.')
        return prenom
    ...
from pages.forms import AskProjectForm

def AskProjectFormProcessor(request):
    return {'AskProjectForm' : AskProjectForm()}
<form method="post" action="{% url 'ask-project' %}">
  {% csrf_token %}

  <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
      <p>{{ AskProjectForm.prenom.errors }}</p>
      <label for="prenom">Votre prenom<span class="form-required" title="Ce champ est requis.">*</span></label>
      {{ AskProjectForm.prenom }}
  </div>
  ...

  <div class="form-button col-lg-12 col-md-12 col-sm-12 col-xs-12">
  <button class="btn btn-default submit">C'est parti !</button>
  </div>
</form>