Seite 1 von 1
URL aufrufen
Verfasst: Samstag 13. Juli 2024, 15:40
von Pitwheazle
Bisher rufe ich die Aufgaben der verschiedenen Kategorien mit
und dem Pfad
auf. Für mein neues Rechenduell will ich die gleichen Routinen benutzen muss aber (manchmal) unterscheiden, ob es um ein Duell geht oder nicht. Meine Funktion "main" nimmt jetzt also einen weiteren Parameter "duell" entgegen
also muss ich den jetzt beim obigen Aufruf ergänzen - kann das aber nicht:
hätte ja klappen können
Nachtrag:
klappt schon besser, ergänzt aber vorne die aufrufende Seite "uebersicht":
wie bekomme ich die weg?
Re: URL aufrufen
Verfasst: Samstag 13. Juli 2024, 18:47
von Pitwheazle
Besteht das Problem darin, dass ich versucht habe hier mit "False" einen Wahrheitswert einzusetzen und im view auszulesen?
Es scheint zu unktionieren mit:
und
Code: Alles auswählen
path('<slug:slug>/<int:duell>/', views.main, name='main'),
... Kann man dieses "0" optional verwenden, also nur eine "1" wenn Duell ansteht und ansonsten bleibt es frei oder so?
... oder ist es sogar möglich, die aufrufende Seite zu übergeben oder auszulesen - ads wäre optimal.
Re: URL aufrufen
Verfasst: Sonntag 14. Juli 2024, 00:57
von noisefloor
Hallo,
mir ist nicht wirklich klar, was du willst...
Sowas? Du hast z.B.
https://rechnentrainer.de/potenzen mit Aufgaben zu Potenzen und willst mit
https://rechnertrainer.de/potenzen/duell das Duell zu Potenzen starten (und nicht die Aufgaben)?
Gruß, noisefloor
Re: URL aufrufen
Verfasst: Sonntag 14. Juli 2024, 08:59
von Pitwheazle
Ich will in beiden Fällen die Aufgaben zu Potenzen starten. Beim Duell brauche ich aber ein anderes HTML Template in dem auch die beiden Duellanten gezeigt werden. Die Aufgaben und die Routinen sind aber gleich mit Ausnahme der Wertetabellen, die sollen beim Duell nicht auftauchen.
Ich dachte ich löse das mit
if duell zeige die normale Aufgabenseite, else ergänze in der Aufgabenseite die Duellanten
if duell starte nach der Erstellung der Aufgabe die Auslosung der Duellanten
und am Ende:
if duell springe auf die Übersichtseite des Schülers zurück, else zur Duellübersicht
und
if duell zeige keine Wertetabellen
Re: URL aufrufen
Verfasst: Sonntag 14. Juli 2024, 12:25
von Pitwheazle
Zu früh gefreut:
Also das funktioniert, aber leider nur für eine Aufgabe - es werden bei meinem System aber immer 10 Aufgaben am Stück gerechnet, außer wenn ich auf "abbrechen" klicke. So soll es auch beim Rechenduell bleiben. Also, wenn ich eine Aufgabe z.B. "Kopfrechnen" von der Duell_Seite aufrufe, so werde ich, wenn ich ich auf "abbrechen" klicke auch, wie gewünscht, wieder auf die Duell-Übersichtseite zurückgeleitet anstelle auf die Schüler-Übersichtseite. Wunderbar - aber wenn ich die Aufgabe löse und ie zweite Aufgabe aufgerufen wird, hat mein System natürlich vergessen, dass die erste Aufgabe von einem Duell kommt und ich lande, wenn ich abbreche, oder auch nach der 10ten Aufgabe nicht im Duell sondern auf der Schüler-Übersichtseite (in dem Fall auf der der Lehrkraft, da diese ja das Duell aufruft).
Wie kann ich dafür sorgen, dass sich das System merkt, dass es in der Duell Umgebung arbeitet?- ich habe keine Idee. Session (da habe ich mich noch nicht mit beschäftigt)? Cookie? Oder irgendwas, was ich schon beherrsche, wo mir die Idee fehlt?
Was mir einfällt, wäre, dass ich im Profil der Lehrkraft einen "Schalter" einfüge, der beim Aufruf des Duells gesetzt und hinterher wieder zurückgesetzt wird.
Re: URL aufrufen
Verfasst: Sonntag 14. Juli 2024, 15:41
von noisefloor
Hallo,
einfach wäre, wenn du für's Duell einfach einen eigenen View anlegst, wo die Programmlogik auf's Duell ausgelegt ist.
Gruß, noisefloor
Re: URL aufrufen
Verfasst: Sonntag 14. Juli 2024, 16:08
von Pitwheazle
Ich glaube nicht. Der view in dem alles zusammenläuft hat 250 Zeilen und der ruft jeweils den jeweiligen view mit der Kategorie auf - das sind zurzeit 28 und auch das Abbrechen, Lösung anzeigen usw. sind eigene views. Und im Endeffekt geht es ja nur darum, dass nach den 10 Aufgaben ein anderes HTML Template aufgerufen wird und die Wertetabellen in den Zuordnungen, bei Termen und Funktionen (bisher) übersprungen werden. Das müsste einfacher gehen. Ich probiere das jetzmal aus, dass die Lehrkraft in den "Duellmodus" geschaltet wird.
Re: URL aufrufen
Verfasst: Sonntag 14. Juli 2024, 19:51
von noisefloor
Hallo,
wie du willst bzw. meinst. Nur: wenn du einen eigenen View anlegst und der am Ende das macht, was du willst, kann man _dann_ nochmal schauen, ob man das nicht mit einem anderen View, der vielleicht ähnlich ist, zusammenlegen kann. Das nennt sich "refactoring" und ist bei größeren Projekten ziemlich normal - egal wie gut man Programmieren kann.
250 Codezeilen in einem View erscheint ein bisschen exzessiv. Da kann man ziemlich sicher Teile in Funktionen auslagern. Ein View an sich dürfte nie so viele Zeilen benötigen.
Gruß, noisefloor
Re: URL aufrufen
Verfasst: Montag 15. Juli 2024, 12:42
von Pitwheazle
Ich habe zwar das, was ich zunächst erreichen wollte, mit 10 Codezeilen hinbekommen, warscheinlich hast du aber recht und ich muss einen eigenen view erstellen.
Zunächst mal: Worin besteht der Nachteil eines umfangreichen views und was ist der Vorteil der Auslagerung. ich hab eigentich alles, was zwei- oder mehrmals genutzt wird in eigene Funktionen ausgelagert. Aber auch die views für die einzelnen Aufgabenkategorien sind manchmal recht lang. Fast alle Kategorien haben Unterkategorien, dadurch werden auch hier die views recht lang. Ich könnte natürlich diese Unterkategorien auch alle auslagern, dadurch würde mein Code aber sicher nicht übersichtlicher.
Ich vermute aber, dass ich mit meinem Rechenduell an neue Grenzen stoße und könnte mir vorstellen, dass ich mich jetzt auch noch mit JavaScrip beschäftigen muss und Routinen auf dem Client ausführen muss. Es wäre schön, wenn mir da jemand eine Einschätzung dazu geben könnte.
Ich versuche mal die einzelnen Schritte meines Duells grob aufzuzeigen:
Code: Alles auswählen
Eine Aufgabenkategorie für das Duell wird aufgerufen (insgesamt werden 10 Aufgaben nacheinander angezeigt):
while keine 10 Aufgaben und kein Abbruch:
erzeuge Aufgabe
lose zwei Duellanten aus
while keine Eingabe und y Sekunden:
zeige die Aufgabe an
zeige Sekunden und erneuere jede Sekunde die Anzeige
while x Sekunden
zeige x * in den Namefeldern an
(nach x Sekunden:)
zeige die beiden Namen an
(nach y Sekunden:)
die Ausgelosten bekommen Punktabzug weil sie keine Antwort hatten
lose neue Duellanten aus und zeige die Namen an
wenn Eingabe erfolgt: überprüfe die Eingabe
if richtig:
Punktevergabe
neue Aufgabe
neue Duellanten
else:
Punktvergabe
alte Aufgabe bleibt bestehn (maximal 3 Versuche)
Nach 10 Aufgaben oder Abbruch
zurück zur Übersicht, Anzeige des Punktestandes
Die Zeit y legt fest, wann automatisch neue Duellanten ausgelost wurden, da die ersten beiden keine Antwort wussen
Die Zeit x legt fest, wie lange Sternchen im Namenfeld gezeigt werden, bevor die Namen angezeigt werden. Damit sollen alle im Raum schon mal rechnen. Und hier vermute ich, komme ich mit meinem Code nicht mehr sinnvoll weiter. Ich müsste nach jeder Sekunde bis zur Veröffentlichung der Namen mein template erneueren ich vermute, das kann man auch auf dem Client erledigen lassen.
Habt ihr da Tipps, wie ich da rangehe?
Re: URL aufrufen
Verfasst: Montag 15. Juli 2024, 15:19
von grubenfox
Pitwheazle hat geschrieben: Montag 15. Juli 2024, 12:42
Zunächst mal: Worin besteht der Nachteil eines umfangreichen views und was ist der Vorteil der Auslagerung.
Ich versuche mich mal (aber mehr als ein paar Allgemeinplätze kommen dabei wohl nicht raus):
Nachteil: viel Code bzw. HTLM-Text mit viel Platz für versteckte Fehler
Auslagerung: möglicherweise hoffentlich viele kleine Routinen mit wenig Code/Text und wenig Platz für Fehler die man unabhängig testen kann...