Seite 1 von 1

Django Model: Feld mit nur einem Wert

Verfasst: Montag 13. Februar 2012, 21:53
von danims
Hallo

In meiner Django App frage ich eine externe REST API ab. Dazu brauche ich ein Authentication Token, welches maximal 5 Stunden gültig ist. Also möchte ich dieses Auth Token zwischenspeichern, damit ich mich nicht bei jeder REST Anfrage neu anmelden muss.

Wie würdet ihr das bewerkstelligen? Ich möchte es eigentlich im Model speichern, aber es gibt ja immer nur einen Wert (die alten Auth tokens brauche ich ja nicht mehr). Würdet ihr einfach einen Wert in die Tabelle speichern und diesen alle 5h überschreiben? Gibt es bessere Lösungen?

Danke

Re: Django Model: Feld mit nur einem Wert

Verfasst: Montag 13. Februar 2012, 22:33
von deets
Das kommt darauf an, in wessen Namen du deise REST API abfragst. Wenn das pro Anwendung nur einmal ist, dann kannst du doch einfach ein Config-Model oder sowas machen, das genau einmal existiert, und eine Spalte fuer das Token + eine fuer dessen letzte Abholung hat.

Re: Django Model: Feld mit nur einem Wert

Verfasst: Dienstag 14. Februar 2012, 22:51
von danims
Danke für deine Antwort.

Mittlerweile habe ich eine super Möglichkeit gefunden. Django bietet ein Caching module (https://docs.djangoproject.com/en/dev/topics/cache/), welches sich super dafür einsetzen lässt. So einfach gehts:

Code: Alles auswählen

if not cache.get('cachedanswer'):
    result = api.request('test')
    cache.set('cachedanswer', result, 3600)
    return result
else:
    return cache.get('cachedanswer')
Damit ist die Antwort für eine Stunde gecached. Funktioniert super!