Django-Ansichten
View-Schicht
Eine View-Funktion, kurz View, ist eine einfache Python-Funktion, die eine Webanfrage entgegennimmt und eine Webantwort zurückgibt.
Die Antwort kann eine HTML-Seite, eine 404-Fehlerseite, eine Weiterleitungsseite, ein XML-Dokument oder ein Bild sein...
Unabhängig davon, welche Logik die View selbst enthält, muss sie eine Antwort zurückgeben. Der Code kann überall geschrieben werden, solange er sich im Python-Verzeichnis befindet; er wird im Allgemeinen in der Datei views.py des Projekts abgelegt.
Jede View-Funktion ist dafür verantwortlich, ein HttpResponse-Objekt zurückzugeben, das die generierte Antwort enthält.
In der View-Schicht gibt es zwei wichtige Objekte: das Request-Objekt (request) und das Response-Objekt (HttpResponse).
Request-Objekt: HttpRequest-Objekt (als Request-Objekt bezeichnet)
Im Folgenden werden einige häufig verwendete Request-Attribute vorgestellt.
1、GET
Der Datentyp ist QueryDict, ein wörterbuchähnliches Objekt, das alle Parameter von HTTP GET enthält.
Wenn doppelte Schlüssel vorhanden sind, werden alle Werte in die entsprechende Liste eingefügt.
Wertformat:object.method。
get(): Gibt eine Zeichenkette zurück; wenn der Schlüssel mehreren Werten entspricht, ruft es den letzten Wert für diesen Schlüssel ab.
Beispiel
name = request.GET.get("")
return HttpResponse('Name: {}'.format(name))

2、POST
Der Datentyp ist QueryDict, ein wörterbuchähnliches Objekt, das alle Parameter von HTTP POST enthält.
Wird häufig für Formulare verwendet; das name-Attribut des Labels im Formular entspricht dem Schlüssel des Parameters, und das value-Attribut entspricht dem Wert des Parameters.
Wertformat:object.method。
get(): Gibt eine Zeichenkette zurück; wenn der Schlüssel mehreren Werten entspricht, ruft es den letzten Wert für diesen Schlüssel ab.
Beispiel
name = request.POST.get("name")
return HttpResponse('Name: {}'.format(name))

3、body
Der Datentyp ist ein binärer Bytestrom, der den Parameterinhalt im rohen Request-Body darstellt. In HTTP wird er für POST verwendet, da GET keinen Request-Body hat.
Es wird in HTTP nicht häufig verwendet, ist aber sehr nützlich bei der Verarbeitung von Nicht-HTTP-Nachrichtenformaten wie Binärbildern, XML, JSON usw.
Beispiel
name = request.body
print(name)
return HttpResponse("Example")

4、path
Ruft den Pfadteil der URL ab; der Datentyp ist string.
Beispiel
name = request.path
print(name)
return HttpResponse("Beispiel-Tutorial")

5、Methode
Die Methode zum Abrufen der aktuellen Anfrage: Der Datentyp ist eine Zeichenkette, und das Ergebnis ist in Großbuchstaben.
Beispiel
name = request.method
print(name)
return HttpResponse("Example")

Antwortobjekt: HttpResponse-Objekt
Das Antwortobjekt tritt hauptsächlich in drei Formen auf: HttpResponse(), render(), redirect().
HttpResponse():Gibt Text zurück; der Parameter ist eine Zeichenkette, und der Textinhalt wird in die Zeichenkette geschrieben. Wenn der Zeichenkettenparameter HTML-Tags enthält, kann er auch gerendert werden.
Beispiel
# return HttpResponse("Beispiel")
return HttpResponse("<a href='/index.html'>Rookie Tutorial</a>")

render():Gibt Text zurück; der erste Parameter ist request, der zweite Parameter ist ein String (Seitenname), und der dritte Parameter ist ein Dictionary (optionaler Parameter, an die Seite übergebene Parameter: der Schlüssel ist der Seitenparametername, und der Wert ist der Parametername in den Views).
Beispiel
name ="Example"
return render(request,"example.html",{"name":name})

redirect(): Weiterleitung, springt zu einer neuen Seite. Der Parameter ist ein String, und im String wird der Seitenpfad angegeben. Wird im Allgemeinen verwendet, um nach dem Absenden eines Formulars zu einer neuen Seite zu springen.
Beispiel
return redirect("/index/")
render und redirect sind Wrapper, die auf HttpResponse aufbauen:
- render: Was auf der zugrunde liegenden Ebene zurückgegeben wird, ist ebenfalls ein HttpResponse-Objekt
- redirect: Was auf der zugrunde liegenden Ebene geerbt wird, ist das HttpResponse-Objekt