コンテンツへスキップ
メニュー
この質問にフラグが付けられました
1 返信
9396 ビュー

I have a requirement which i have to call same controller but i need to change controller type["HTTP", "JSON"] based on condition
here is controller definition

@http.route('/controller', auth="public")
Now the problem is i have to call same controller based on the request type send to my controller, like this
if it send request to '/controller' of type "HTTP" then dynamicallythis controller should become
 @http.route('/controller', auth="public", type="http")
and if it send request to '/controller' of type "JSON" then dynamically this controller should become
@http.route('/controller', auth="public", type="json")
i have tried writing controller like this
class my_controller(http.Controller)
     __dynamicallyType= None
     @http.route('/controller', auth="public", type= __dynamicallyType)

i can change variable "__dynamicallyTypefrom" another function before this controller is about to call ans i can see "__dynamicallyTypefrom" value change during runtime but the controller is not able to change its type dynamically, it assume to be change whatever i assign for first time, once the value is passed to the type of the controller then type of the controller do not change for next run
Any hint or trick or hack if fine

アバター
破棄
最善の回答

IMHO, not possible...


What you can try, use 2 controllers which call common method...


    @http.route('/http', type='http', auth="none")    
def xhttp(self):
        return self.xmagic()

    @http.route('/json', type='json', auth="none")
def xjson(self):
        return self.xmagic(reqtype='json')

    def xmagic(self, reqtype='http'):
        l = ['a','b','c']
 if reqtype == 'http':
            return str(l)
else:
            return l


That will return:

    

アバター
破棄
関連投稿 返信 ビュー 活動
1
10月 24
2848
1
10月 22
6509
1
11月 17
9989
6
12月 23
20177
3
3月 17
3950