Warum wird mein Template nicht aufgerufen?
Verfasst: Dienstag 16. Januar 2024, 13:58
Ich stehe schon wieder auf dem Schlauch (und hoffe das wird nicht zu peinlich für mich):
Also zum Beginn des neuen Halbjahres, also am 1.2. werden alle Zähler der Schülerinnen und Schüler zurückgesetzt. Wenn sie sich jetzt anmelden und fleißig Aufgaben rechnen, sind die dann "weg" - das ist blöd. Aus diesem Grunde können sie jetzt im Januar wählen, ob sie jetzt schon mit dem neuen Schuljahr anfangen wollen. Wenn sie sich neu anmelden, funktioniert das wie gewünscht, die entsprechende Frage soll aber auch gestellt werden, wenn sie schon angemeldet sind.
Die Funktion, die aufgerufen wird, ist diese:
und das aufgerufene Template dieses:
Wenn sich die Kids neu anmelden, wird "halbjahr_pruefen" hier aufgerufen (und das klappt auch):
Wenn die Seite "index" oder "uebersicht" aufgerufen wird, wird die Funktion "halbjahr_pruefen" auch aufgerufen und "print" gibt auch brav den "content" aus -soweit wird der Code ausgeführt - das Template 'naechstes_halbjahr.html' wird anscheinend auch aufgerufen, zumindest bekomme ich einen Fehler, wenn ich das Template umbenenne - das Template wird aber nicht angezeigt und ich komme ums Verplatzen mal wieder nicht drauf warum! Hilfe!
Hier noch der Code der beim Klick auf "index" ausgeführt wird:
Wie gesagt, auch hier wird "halbjahr_pruefen" aufgerufen und der "content" ausgegeben - das wars aber.
Also zum Beginn des neuen Halbjahres, also am 1.2. werden alle Zähler der Schülerinnen und Schüler zurückgesetzt. Wenn sie sich jetzt anmelden und fleißig Aufgaben rechnen, sind die dann "weg" - das ist blöd. Aus diesem Grunde können sie jetzt im Januar wählen, ob sie jetzt schon mit dem neuen Schuljahr anfangen wollen. Wenn sie sich neu anmelden, funktioniert das wie gewünscht, die entsprechende Frage soll aber auch gestellt werden, wenn sie schon angemeldet sind.
Die Funktion, die aufgerufen wird, ist diese:
Code: Alles auswählen
def halbjahr_pruefen(req):
user = req.user.profil
heute = datetime.now()
if heute.month == 1 or heute.month == 6 or heute.month == 7: #Frage nach neuem Halbjahr
next_schuljahr, next_halbjahr = name_next_halbjahr()
if user.halbjahr == next_halbjahr and user.schuljahr == next_schuljahr: #user arbeitet schon am nächsten halbjahr
pass
else:
if user.voreinst.get("no_halbjahr", "False") == "False": #überprüft, ob Frage nicht gestellt werden soll
if heute.month == 1:
monat = "Juni"
else:
monat = "Januar"
context = {'monat' : monat}
print(context)
return render(req, 'naechstes_halbjahr.html', context)
else: #Überprüfung, ob Halbjahr aktuell ist
schuljahr, halbjahr = name_halbjahr()
if user.halbjahr == halbjahr and user.schuljahr == schuljahr:
pass
else: #falls nicht
user.halbjahr = halbjahr
user.schuljahr = schuljahr
user.save()
return redirect(neues_halbjahr)
if User.objects.filter(pk=req.user.id, groups__name='Lehrer').exists():
return redirect('index')
return redirect('uebersicht')
Code: Alles auswählen
{% extends 'auswahl.html' %}
{% block content %}
<body>
<h2>Neues Halbjahr beginnen?</h2>
<h2>Wir haben jetzt {% now "F" %} - bald gibt es Zeugnisse. Sollen deine Aufgaben, die du ab jetzt machst, schon für das nächste Schulhalbjahr zählen?</h2>
Diese Wahl kannst du nicht rückgängig machen. Bestätige sie also bitte, indem du hier "ja" eingibst:
<br>
<br>
<form method="POST" action="{% url 'naechstes_halbjahr' %}">
{% csrf_token %}
<form>
<label> neues Schulhalbjahr? </label>
<input id="neu" name="neu" type="text">
<br>
<br>
<input type="Checkbox" name="keinefrage">
<label> Nein, ich möchte <b>nicht</b> das neue Halbjahr anfangen und <b>möchte auch bis zum nächsten {{monat}} nicht mehr danach gefragt werden!</b> </label>
<br>
<br>
<input type="submit" value="weiter">
</form>
</body>
{% endblock %}
</html>
Code: Alles auswählen
def anmelden(req):
titel = "Anmelden"
if req.method == 'POST':
#get_expire_at_browser_close()
form = Login_Form(req.POST)
if form.is_valid ():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(req, username=username, password=password)
cookie_loeschen = req.POST.get('cookie_loeschen')
if cookie_loeschen == 'on':
req.session.set_expiry(0)
if user is not None:
login(req, user)
return halbjahr_pruefen(req)
titel = "Username und/oder Passwort stimmen nicht"
form = Login_Form()
context = {'form' : form, 'titel': titel}
return render(req, 'anmelden.html', context)
Hier noch der Code der beim Klick auf "index" ausgeführt wird:
Code: Alles auswählen
def index(req):
anz_angemeldet = Profil.objects.count()
anz_lehrer = User.objects.filter(groups__name="Lehrer").count()
anz_aufg = Protokoll.objects.count()
if req.user.is_authenticated and not req.user.is_superuser:
halbjahr_pruefen(req)
if User.objects.filter(pk=req.user.id, groups__name='Lehrer').exists():
lehrer = True
else:
lehrer = False
return render(req, 'index.html', context= {'lehrer': lehrer, 'anz_angemeldet': anz_angemeldet, 'anz_lehrer': anz_lehrer, 'anz_aufg': anz_aufg})