I Tornado verwenden und ich erklärte dies einen Request mit einem einzelnen Parameter wie:Get URL-Parameter innerhalb prepare() Funktion, statt get()/post()
class StuffHandler(RequestHandler):
def get(self, stuff_name):
...
app = Application([
(r'/stuff/(.*)/public', StuffHandler)
])
Jetzt habe ich eine anderen Handler für '/stuff/(.*)/private'
, die den Benutzer authentifiziert werden muss: get_current_user()
vor get()
aufgerufen werden verursacht
class PrivateStuffHandler(RequestHandler):
@tornado.web.authenticated
def get(self, stuff_name):
...
Dies natürlich. Das Problem ist, dass, um get_current_user()
ausführen zu können, ich den stuff_name
Parameter kennen muss.
Also dachte ich, dass ich die prepare()
oder die initialize()
Methode verwenden kann, die vor get_current_user()
aufgerufen wird. Ich kann jedoch nicht auf stuff_name
von diesen Methoden zugreifen. Ich habe versucht stuff_name
als Parameter zu setzen, aber es hat nicht funktioniert, dann habe ich versucht, self.get_argument("stuff_name")
anzurufen, aber es hat auch nicht funktioniert.
Wie greife ich auf einen URL-Parameter von der prepare()
Methode zu?
Sie es in Klassenvariablen speichern könnten und es wieder? wie self.stuff_name = stuff_name? – lamirap
@lamirap aber wie erkenne ich dann, wenn eine Person '/ stuff/a/private' oder'/stuff/b/private' besucht? Der self.stuff_name wird immer derselbe sein ... (Oder: wo aktualisiere ich ihn, wenn er sich ändert?) – wil93