2011-10-12 7 views
12

मैं यह पता लगाने की कोशिश कर रहा हूं कि 3 (वैकल्पिक) यूआरएल पैरामीटर के साथ एक यूआरएल कैसे कार्यान्वित किया जाए।मैं टोरनाडो मार्ग में एकाधिक यूआरएल पैरामीटर कैसे कार्यान्वित कर सकता हूं?

मुझे पता चला कि एएसपी.नेट एमवीसी 3 में इसे कैसे किया जाए, लेकिन वर्तमान परियोजना की बाधाओं ने इसे समाप्त कर दिया। तो, यहां मैं जो खोज रहा हूं:

base/{param1}/{param2}/{param3} जहां param2 और param3 वैकल्पिक हैं। क्या यह handlers सेक्शन में बस एक रेगेक्स पैटर्न है?

उत्तर

32

मैं अगर वहाँ एक अच्छा तरह से यह करने के लिए यकीन नहीं है, लेकिन यह काम करना चाहिए:

import tornado.web 
import tornado.httpserver 

class TestParamsHandler(tornado.web.RequestHandler): 
    def get(self, param1, param2, param3): 
     param2 = param2 if param2 else 'default2' 
     param3 = param3 if param3 else 'default3' 
     self.write(
      { 
       'param1': param1, 
       'param2': param2, 
       'param3': param3 
      } 
     ) 

# My initial answer is above, but I think the following is better. 
class TestParamsHandler2(tornado.web.RequestHandler): 
    def get(self, **params): 
     self.write(params) 


application = tornado.web.Application([ 
    (r"/test1/(?P<param1>[^\/]+)/?(?P<param2>[^\/]+)?/?(?P<param3>[^\/]+)?", TestParamsHandler), 
    (r"/test2/(?P<param1>[^\/]+)/?(?P<param2>[^\/]+)?/?(?P<param3>[^\/]+)?", TestParamsHandler2) 
]) 
http_server = tornado.httpserver.HTTPServer(application) 
http_server.listen(8080) 
tornado.ioloop.IOLoop.instance().start() 
+0

महान है, धन्यवाद। मैं इसे आजमाऊंगा! – swasheck

संबंधित मुद्दे

 संबंधित मुद्दे