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

def example(request):
    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

def example(request):
    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

def example(request):
    name = request.body
    print(name)
    return HttpResponse("Example")

4、path

Ruft den Pfadteil der URL ab; der Datentyp ist string.

Beispiel

def example(request):
    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

def example(request):
    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

def example(request):
    # 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

def example(request):
    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

def example(request):
    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
Weitere Erweiterungen