Inhaltsverzeichnis

Model

admin

from django.contrib import admin

from . import models

admin.site.register(models.Artikel)

URLs

from django.urls import path
from . import views

urlpatterns = [
    path("<int:id>/something/, views.something, name="mysomething")
]

Die entsprechende view sieht so aus:

def something(request, id):
    pass

views

def something(request, id):
    return HttpResponse(id)

Template

Bedingungen

case/switch/select-Anweisung

Gibt es nicht - muss durch if-Anweisungen abgebildet werden.

if-else

{% if Bedingung %}
      Code
{% else %}
      Code
{% endif %}

Ab django 1.4 existiert auch {% elif %}, voher kann man sich mit:

{% load assign %}
{% assign name="Variablenname" %} 0 {% endassign %}

{% if Bedingung %}
       Code
       {% assign name="Variablenname" %} 1 {% endassign %}
{% endif %}
{% if Bedingung AND Variablenname == 0 %}
       Code
       {% assign name="Variablenname" %} 1 {% endassign %}
{% endif %}
{% if Bedingung AND Variablenname == 0 %}
       Code
{% else %}
       Code
{% endif %}

Man setzt einfach eine Variable wenn ein if-Zweig durchlaufen wurde und prüft bei allen folgenden if-Anweisungen ob diese Variable auf 0 steht, steht sie auf 1, wurde bereits ein if-Zweig durchlaufen und es soll kein weiterer if-Zweig durchlaufen werden. Man erhält so eine case- oder switch-Anweisung.

Sonstiges

Variablen zuweisen



Zuweisung:

{% assign name="Variablenname" %} 1 {% endassign %}

Auslesen:

{{ Variablenname }}


bzw. letztendlich wie jede andere interne Variable auch

Hinweis: Möglicherweise funktioniert Assign nur beim höchsten Eltern-Template (also bei Vererbung/verschachtelten Templates das Höchste - das was kein „extends“ mehr enthält)

Limits

Troubleshooting

Problem Beschreibung Mögliche Lösung
Ein oder alle Blöcke ({% Block Name %}) werden leer ausgegeben Obwohl die Blöcke einen Inhalt haben sollten, werden sie ohne Inhalt in der Website angezeigt - es kommt keine Fehlermeldung Der Name eines oder mehrere Blöcke (es müssen alle Ebenen bei vererbten Templates geprüft werden) steht nicht in „ “.

Also (Falsch):
{% Block main %}
statt (Richtig):
{% Block „main“ %}
Ausgabe „The _imaging C module is not installed“PIL (Python Image Librarie) vermisst das Modul _imaging bzw. das Modul ist nicht gegen die Systembibliotheken gelinkt.PIL ist nur teilweise in Python relaisiert, ein Teil wird durch C-Bibliotheken erledigt (u.a. libjpeg) die über das PIL-eigene C-Modul _imaging realisiert wird.
Vor allem in virtualenv kann es nach dem verschieben auf eine andere Maschine zu Problemen kommen.

  • PIL deinstallieren (pip uninstall PIL)
  • python-dev installieren (aptitude install python-dev)
  • dev-Pakete der gewünschten Bildformate installieren (Zum Beispiel libjpeg-dev)
  • PIL installieren (pip install PIL)

Durch das deinstallieren und wieder installieren wird _imaging neu compiliert und gegen die vorhandenen Systembibliotheken gelinkt