Was ist der Sinn darin, cd = form.cleaned_data
zu setzen, bevor man die Eingabewerte einer POST/GET-Übermittlung übergibt?
Was ist der Sinn darin und warum ist es notwendig? (falls es so ist)
Was ist der Sinn darin, cd = form.cleaned_data
zu setzen, bevor man die Eingabewerte einer POST/GET-Übermittlung übergibt?
Was ist der Sinn darin und warum ist es notwendig? (falls es so ist)
Es ist nicht notwendig, das Attribut .cleaned_data eines Formulars zu verwenden, bevor die Eingabewerte übergeben werden. Es wird einen AttributeError auslösen, wenn Sie es vor dem Aufruf von .is_valid() in einem gebundenen Formular tun oder wenn Sie versuchen, darauf in einem ungebundenen Formular zuzugreifen, Lesen Sie mehr über Form.cleaned_data .
Außerdem ist es in der Regel eine gute Idee, die Verwendung der Formulardaten in einer Form-Methode abstrakt zu halten, um die Logik zu kapseln
In Ihren Ansichten sollten Sie Formulare traditionell wie folgt verwenden:
if request.method == 'POST':
form = MyForm(request.POST) # Übergeben Sie die POST/GET-Daten des Requests
if form.is_valid(): # rufen Sie .is_valid auf
form.process() # Sehen Sie, wie ich .cleaned_data nicht in der Ansicht aufrufe
In Ihrem Formular:
class MyForm(forms.Form):
my_field = forms.CharField()
def process(self):
# Geht davon aus, dass .cleaned_data existiert, weil diese Methode immer nach .is_valid() aufgerufen wird, andernfalls wird ein AttributeError ausgelöst
cd = self.cleaned_data
# Machen Sie etwas Interessantes mit Ihren Daten in cd
# Zu diesem Zeitpunkt wurde .cleaned_data _nach_ dem Weitergeben der POST/GET-Daten als Formulardaten verwendet
+1 für die Erwähnung, dass Django eine AttributeError erheben wird, wenn du versuchst, auf cleaned_data
zuzugreifen, bevor du is_valid()
aufrufst. Wusstest du schon? Es passiert immer noch 6 Jahre später...
@pentix Ja. Glauben Sie, dass sie vielleicht einen FormNotValidated Fehler verwendet haben könnten?
Sobald is_valid() True zurückgibt, können Sie die Formularübermittlung verarbeiten und sicher sein, dass sie den Validierungsregeln entspricht, die von Ihrem Formular definiert wurden. Sie könnten zu diesem Zeitpunkt zwar direkt auf request.POST zugreifen, es ist jedoch besser, auf form.cleaned_data zuzugreifen. Diese Daten wurden nicht nur validiert, sondern auch in die relevanten Python-Typen für Sie umgewandelt.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.