2016-03-25 74 views
0

)() (yerine get'in,) (URL parametresi içine hazırlamak/yazı fonksiyonunu alın ve bu gibi tek bir parametre ile bir RequestHandler ilan:Ben kasırga kullanıyorum

class StuffHandler(RequestHandler): 
    def get(self, stuff_name): 
     ... 

app = Application([ 
    (r'/stuff/(.*)/public', StuffHandler) 
]) 

Şimdi başka işleyici eklendi kullanıcı gerektirir '/stuff/(.*)/private', kimlik doğrulaması için: tabii

class PrivateStuffHandler(RequestHandler): 
    @tornado.web.authenticated 
    def get(self, stuff_name): 
     ... 

Bu get_current_user()get() önce çağrılacak neden olacaktır

. Sorun şu ki, get_current_user()'un çalışması için stuff_name parametresini bilmem gerekiyor.

get_current_user()'dan önce çağrılan prepare() veya initialize() yöntemini kullanabileceğimi düşündüm. Ancak, bu yöntemlerden stuff_name'a erişemiyorum. stuff_name parametresini bir parametre olarak kullanmayı denedim ama işe yaramadı, daha sonra self.get_argument("stuff_name") numaralı telefonu aramayı denedim ama işe yaramadı.

prepare() yönteminden bir URL parametresine nasıl erişirim?

+0

bunu sınıf değişkeninde saklayın ve almak olabilir? self.stuff_name = stuff_name gibi? – lamirap

+0

@lamirap ancak bir kişi '/ stuff/a/private' veya'/stuff/b/private' ne zaman ziyaret ettiğini nasıl anlarım? Self.stuff_name her zaman aynı olacaktır ... (Ya da değiştiğinde onu nerede güncellerim?) – wil93

cevap

1

Tam yol almak için self.request.path'u kullanabilir ve daha sonra ihtiyacınız olan yoldaki değeri elde edebilirsiniz.

+0

'Hazırlık()' da kullanılabilir. –

+0

Belki de bu tek çözüm ... Ama çok çirkin :( – wil93

+0

Ayrıca: ''/stuff /(.*)/private '' işlevinden ''/private-stuff/'' ye yol tanımını değiştirirsem. *) ''?' 'Mantığını değiştirmem gerekir mi? Hazırlık()' – wil93

İlgili konular