** is_valid ** wurde von der ** post ** -Methode der ** View ** -Klasse ausgeführt, die in ** views.py ** geschrieben wurde. Das Ergebnis von ** is_valid ** ist ** False **, unabhängig davon, welche Art von Eingabe im WEB-Browser erfolgt.
Die Validierungsmethode ist in forms.py nicht implementiert.
Das Folgende ist ein Auszug aus dem Quellcode. Es gibt eine ** Meta ** -Klasse in der ** Form ** -Klasse, aber dies ist eine Erkennung, die nichts mit diesem Ereignis zu tun hat.
views.py
class View(View):
def post(self, request, *args, **kwargs):
form = Form()
is_valid = form.is_valid()
print(is_valid)
...
forms.py
class Form(forms.ModelForm):
class Meta:
model = ExperimentResult
fields = ("title", "comment",)
widgets = {
'title' : forms.TextInput(attrs={'class':'text_area'}),
'comment' : forms.TextInput(attrs={'class':'text_area'})
}
Die Ausführungsumgebung ist ** django 2.2.12 **, python3.7, Windows 10.
Bei der Instanziierung der Form-Klasse wird davon ausgegangen, dass das erste Argument der Methode init eine "Anforderung" enthält.
Beim Schreiben von form = FormClass () wird "request" nicht an die Methode init übergeben. Wenn die Methode "is_valid" ausgeführt wird, tritt daher ein Validierungsfehler auf, da "request" nicht übergeben wird und immer "False" zurückgegeben wird.
Fügen Sie beim Instanziieren der Form-Klasse data = request.POST als Argument ein.
views.py
class View(View):
def post(self, request, *args, **kwargs):
form = Form(data=request.POST)
is_valid = form.is_valid()
print(is_valid)
...
Nachdem ich die oben genannten Maßnahmen ergriffen hatte, bestätigte ich, dass True zurückkehren würde.
https://stackoverflow.com/questions/20801452/django-form-is-valid-always-false