Frage

Ich habe eine Django-Anwendung, die Template-Tag profile zur Verfügung stellt. Der Tag akzeptiert einen Benutzernamen als Argument. Wie soll ich die Situation behandeln, wenn es keine User Instanz mit dem angegebenen Benutzernamen existiert? Ist es sinnvoll zu erhöhen HTTP 404 in einem Template-Tag? Oder soll ich einfach ein leeres Wörterbuch auf die Vorlage übergeben?

War es hilfreich?

Lösung

Ich glaube nicht, es ist möglich, ein 404 aus der Vorlage zu erhöhen, und Sie sollen es nicht tun, wenn Sie. Sie sollten die Logik und Präsentation getrennt halten.

Sie haben zwei Klangmöglichkeiten.

  • Do macht nichts mit Ihrem Template-Tag (nicht stumm)
  • Heben Sie eine Vorlage Fehler.

Sie haben nicht genau sagen, was Ihre Template-Tag tut, so kann ich keine der beiden empfehlen, aber das Normalste mit einem Template-Tag zu tun, ist leise zum Scheitern verurteilt.

Andere Tipps

Wenn die Seite Benutzer spezifisch ist, sollten Sie den Benutzer @login_required erhalten, bevor die Seite Rendering, so dass Sie wissen, dass der Benutzer vorhanden ist.

Ansonsten vereinbarungs Sie sollten nur stumm in den Template-Tags nicht.

Was Sie tun sollten, ist Check in Ihrer Vorlage, wenn die user Variable vorhanden ist, bevor die profile-Tag angezeigt wird.

Ich kann auf zwei Arten sehen:

Verwenden Sie if-Anweisung mit JavaScript-Code umgeleitet werden, wie

{% if profile_not_exist %}
   Javascript with redirect
{% else %}
   Generic code
{% endif %}

Oder definiert Logik in der Ansicht (bessere Art), wie

def index(request):
   if(profile_not_exist):
      indexTemplate = loader.get_template('404.html')
   else:
      indexTemplate = loader.get_template('index.html')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top