2017-07-29 2 views
1

Ich mache ein Essen Bestellungsprojekt in Django, und ich möchte einzigartige Bestellnummern für die schnelle Überprüfung des Benutzers, wenn sie kommen, um das Essen nach der Bestellung abholen.Django Session Zähler

Wenn ich eine zufällige Kombination von Zahlen und Buchstaben erstelle, kann es vorkommen, dass zwei Aufträge die gleiche Bestellnummer haben. Ist es möglich, die Auftragsnummer für jede Sitzung eindeutig zu machen?

Antwort

0

Speichern Sie dies auf der request.session oder ist es ein Modell in der Datenbank? Wenn es das Modell in der Datenbank ist, ist das viel einfacher. Setzen Sie einfach die unique=True Kwarg in das Feld. Allerdings müssen Sie immer noch die eindeutigen Felder generieren.

Betrachten Sie this guy's_createHash Funktion in seiner Frage. Kombiniert mit der akzeptierten Antwort können Sie auf diese Weise eindeutige Bestell-IDs erstellen. Wenn nur das Objekt request.session angefügt wird, ist es schwieriger (wenn nicht unmöglich) 100% sicher zu sein, dass die Zeichenfolge nicht wiederholt wurde, da es keine Möglichkeit gibt, alle vorhandenen Sitzungen nach einem benutzerdefinierten Attribut abzufragen. Ich glaube nicht, session ist das Wort, das Sie suchen, obwohl.

0

Verwenden Sie einfach normale inkrementale Bestellnummern und One Time Passwords (OTP)

Benutzer pyotp für um zufällige OTP zu erzeugen.

Wenn der Benutzer bestellt, erstellen Sie eine geheime Zeichenfolge. Dann Generiere ein OTP für Benutzer und sende es an sie.

Wenn sie ankommen, um abzuholen, zeigen sie das OTP. Sie können es überprüfen mit pyotp und die geheime Zeichenfolge zu überprüfen.

Zählerbasiertes OTP verwenden.

Speichern Sie den geheimen Schlüssel im Auftragsmodell.

Einfach und effektiv.

Verwandte Themen