Heim > Artikel > Backend-Entwicklung > Hier sind einige Titeloptionen, die mit unterschiedlichen Tönen und Spezifitätsgraden spielen: **Direkt und informativ:** * So greifen Sie in Go-Vorlagen auf den Anforderungskontext zu * Go-Vorlagen: Zugriffsanfrage
Anfragekontext in Go-Vorlagen verwenden
In Go-Vorlagen kann es vorkommen, dass Sie auf Informationen aus der auslösenden Anfrage zugreifen müssen, B. feststellen, ob der aktuelle Benutzer ein Administrator ist. Vorlagen verfügen jedoch nicht über ein inhärentes Bewusstsein für den Anforderungskontext.
Lösung: Pipelines
Ein gängiger Ansatz besteht darin, Pipelines zu verwenden, um die erforderlichen Daten vom Handler an die Vorlage zu übergeben . Dazu gehört das Erstellen einer Pipeline-Variablen, die die relevanten Kontextinformationen enthält, und der anschließende Zugriff darauf innerhalb der Vorlage. Zum Beispiel:
<code class="go">type TemplateData struct { IsUserAdmin bool } func handler(w http.ResponseWriter, r *http.Request) { isUserAdmin := isAdmin(r) data := TemplateData{IsUserAdmin: isUserAdmin} t.Execute(w, data) }</code>
Innerhalb der Vorlage:
{{if .IsUserAdmin}} <a href="/admin/nuke">Go to the big red nuclear button</a> {{end}}
Kontext einbetten
Eine andere Möglichkeit besteht darin, den Anforderungskontext in einen benutzerdefinierten einzubetten Datenstruktur der Vorlage. Dadurch können Sie gleichzeitig auf die Vorlagendaten und den Kontext zugreifen:
<code class="go">type TemplateData struct { Data interface{} Context *http.Request }</code>
Innerhalb der Vorlage:
{{if .Context.IsAdmin}} <a href="/admin/nuke">Go to the big red nuclear button</a> {{end}}
Trichtermethode
Während die Funcs-Methode zum Definieren benutzerdefinierter Funktionen verwendet werden kann, wird sie nicht für die Verarbeitung komplexer Logik wie der Bestimmung von Benutzerberechtigungen empfohlen. Es ist besser, solche Aufgaben bei den Handlern oder Controllern zu belassen.
Best Practice
Im Allgemeinen gilt es als Best Practice, Vorlagen auf die Handhabung der Anzeigelogik zu beschränken und die Einführung von Geschäftslogik zu vermeiden oder Kontextabhängigkeiten anfordern. In bestimmten Situationen kann es jedoch erforderlich sein, auf bestimmte Anfrageinformationen zuzugreifen, daher die oben beschriebenen Methoden.
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die mit unterschiedlichen Tönen und Spezifitätsgraden spielen: **Direkt und informativ:** * So greifen Sie in Go-Vorlagen auf den Anforderungskontext zu * Go-Vorlagen: Zugriffsanfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!