首页 > 解决方案 > 表单验证不起作用 Django 并仅在消息上打印

问题描述

Django 表单验证不起作用。它只打印以下消息:表单无效!

我是 Django 初学者,我无法弄清楚为什么会发生这种情况。

form.py 中的我的代码:

efrom django import forms
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.forms.widgets import CheckboxSelectMultiple
from blog.models import Category
from wsgiref.validate import validator


class PostForm(forms.Form):
    title = forms.CharField(max_length = 100, min_length= 1,)
    slug = forms.SlugField(allow_unicode=True)
    message = forms.CharField(widget = forms.Textarea)
    banner = forms.ImageField()
    category = forms.ModelChoiceField(queryset=Category.objects)
    authors = forms.ModelChoiceField(queryset=User.objects, 
    widget=CheckboxSelectMultiple)    
    def clean(self):
        cleaned_data = super(PostForm, self).clean()
        slug = cleaned_data['slug']

    if not "sepehr" in slug:
        raise forms.ValidationError("here we have some errors !")
    return cleaned_data

我在视图中的代码:

class HoemView(generic.TemplateView):
    template_name = 'blog2/create.html'
    def get(self, request):
        form = PostForm()
        context = {
            'form':form
         }
        return render(request, self.template_name, context)

    def post(self, request):
         form = PostForm(request.POST, request.FILES)

        if form.is_valid():
             return HttpResponse('form is valid!')

        return HttpResponse('form is not valid!')

标签: djangopython-3.x

解决方案


您所看到的只是“表格无效!” 因为这就是您在 HttpResponse 中返回的所有视图。

将最后一行从:

return HttpResponse('form is not valid!')

至:

return HttpResponse(form.errors)

那应该告诉你你的错误是什么。


推荐阅读