/ / Übergeben des Vorlagennamens in die DJango-Ansicht zum Rendern - django, templates

Übergeben des Vorlagennamens in die DJango-Ansicht zum Rendern - django, templates

Ich arbeite mit einem DJango View. Es wird als ein implementiert function-based view. Was ich tun möchte, ist, eine Vorlage in die Funktion zum Rendern in ein HTML-Dokument einzutragen.

Im folgenden Beispiel anstelle von Hardcoding "Ladenbesitzer / mstrstorehead_form.html"Ich möchte einen Vorlagennamen zur Verwendung weitergeben.

Wie kann das gemacht werden? Ich habe die Information hier gesehen:

Wie sollten Schablonennamen dynamisch mithilfe von klassenbasierten Ansichten festgelegt werden?

aber es befasst sich mehr mit klassenbasierten Ansichten

TIA

views.py

@login_required
def edit_store_data(request):
success = False
message = "No changes to report"
message_color = "green"

username = request.user.username
local_email = request.user.email
local_pass = request.user.password

[... snip ... ]

return render(request, "storeowner/mstrstorehead_form.html",
{"form": master_store_head_form, "success": `success, "message": message, "message_color": message_color})`

Die Funktionsweise funktioniert so, dass sich ein Benutzer mit der EMail-Adresse und dem Passwort "anmeldet". Ein "Anmelde-Link" wird als Teil einer "Bestätigungs-E-Mail" an den Benutzer gesendet.

Was passiert, wenn Sie auf den Login-Link klicken, hängt davon ab, ob zusätzliche (benötigte) Informationen bereits in der Datenbank vorhanden sind.

Wenn die Information nicht in der DB ist: Wenn Sie auf den Link klicken, wird der Benutzer auf eine Seite übertragen, um sie in das System einzugeben (dargestellt durch dieses Formular - Vorname, Nachname usw.). Nachdem die Basisinformationen gespeichert sind, wird der Benutzer auf eine "Startseite" übertragen

Wenn sich die Information in der DB befindet: Der Benutzer wird automatisch auf die Homepage übertragen.

So oder so, wenn der Benutzer eingeloggt ist, hat er / sie die Möglichkeit, die Daten zu ändern (sobald er eingeloggt ist) - indem er auf einen der Menüpunkte (zB: Profil) klickt

Also, diese cpde kann von 2 Orten aufgerufen werden

  • => einmal den DB mit Daten "initialisieren" (bevor er sich auf der Startseite anmeldet)

  • => ein anderes Mal um die Daten zu ändern - nach dem Einloggen in die Homepage (zB wenn die Person heiratet und den Nachnamen ändern muss)
    die DB)

Das einzige was sich ändern würde (zwischen den 2Orte) ist die Vorlage verwendet (daher mein Wunsch, es zu übergeben). Es ähnelt dem oben genannten Problem (außer es bezieht sich auf Cross-Based-Views)

Antworten:

0 für die Antwort № 1

Klingt nach dem, wonach du bist umleiten.

Zuerst können Sie die HTTP-GET-Daten in überprüfendie URL und einige DB Lookups, dann können Sie - je nach Ihren Anforderungen - auf die Homepage oder eine andere Seite mit einem Webformular umleiten, um weitere Informationen zu erhalten.

Vielleicht etwas wie das Folgende:

def link_process(request):
# get some GET params encoded in URL like
# www.mydomain.com/handle_login_link?username=john
username = request.GET["username"]
# do related db lookups:
...

#conditional redirect
if need_more_data:
return redirect("some-view-name", form=MoreDataForm)
else:
return redirect("homepage")