Python3 – Tornado의 Request

9329 단어 Python3------Tornado

1. Tornado의 Request 객체 속성


등록 정보
설명
self.request.method
http 요청 헤더;get,post 등
self.reuqest.uri
클라이언트가 전체uri를 요청합니다
self.request.path
uri의 경로 이름, 검색을 포함하지 않는 문자열
self.request.query
uri의 검색 문자열
self.request.version
http/1.1
self.request.headers
요청 헤더
self.requset.body
문자열 메시지
self.request.remote_ip
클라이언트가 요청한 IP
self.request.protocol
http 프로토콜
self.request.host
요청된 메시지의 호스트 이름
self.request.files
클라이언트가 올린 파일을 사전적으로 표현하기;
self.request.cookies
클라이언트의 cookies 사전
self.request.arguments
클라이언트가 제출한 매개 변수
 
예:
import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options #  options 

tornado.options.define("port", default=8000, type=int, help=" ")
tornado.options.define("content", default=[], type=str, multiple=True, help=" ")

class IndexHandler(tornado.web.RequestHandler):
    """ """
    def get(self):
        self.write("Hello World!")
        self.write("
-------method:
") self.write(self.request.method) self.write("
-------uri:
") self.write(self.request.uri) self.write("
-------path:
") self.write(self.request.path) self.write("
-------query:
") self.write(self.request.query) self.write("
-------version:
") self.write(self.request.version) self.write("
-------headers['Accept-Language']:
") self.write(self.request.headers["Accept-Language"]) self.write("
-------body:
") self.write(self.request.body) self.write("
-------remote_ip:
") self.write(self.request.remote_ip) self.write("
-------protocol:
") self.write(self.request.protocol) self.write("
-------host:
") self.write(self.request.host) self.write("
-------arguments:
") self.write(self.request.arguments) self.write("
-------query_arguments:
") self.write(self.request.query_arguments) self.write("
-------body_arguments:
") self.write(self.request.body_arguments) self.write("
-------files:
") self.write(self.request.files) self.write("
-------cookies:
") self.write(self.request.cookies) self.write("
") # settings settings = { "template_path":"templates", "static_path":"statics", } if __name__ == "__main__": tornado.options.parse_config_file("./config") print(tornado.options.options.content) # app = tornado.web.Application([ (r"/", IndexHandler), ],debug=True,**settings) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(tornado.options.options.port) tornado.ioloop.IOLoop.current().start()

 

2. Tornado의 Request 요청 매개 변수 가져오기


2.1、self.get_query_argument(name, default=_ARG_DEFAULT, strip=True)

  • 요청한 검색 문자열에서 지정한 매개 변수name의 값을 되돌려줍니다. 같은 이름의 매개 변수가 여러 개 나타나면 마지막 값을 되돌려줍니다.
  • default는name 파라미터를 설정하지 않았을 때 되돌아오는 기본값입니다.default도 설정하지 않으면 tornado를 던집니다.web.MissingArgumentError 예외입니다.
  • strip은 좌우 양쪽의 공백 문자를 필터할지 여부를 표시합니다. 기본값은 필터입니다.

  •  

    2.2、self.get_query_arguments(name, strip=True)

  • 요청한 검색 문자열에서 지정한 매개 변수name의 값을 되돌려줍니다.list 목록을 되돌려줍니다. (name 매개 변수가 한 값만 있어도)name 매개 변수를 찾지 못하면 빈 목록 [] 을 되돌려줍니다.
  • strip은 좌우 양쪽의 공백 문자를 필터할지 여부를 표시합니다. 기본값은 필터입니다.

  •  

    2.3、self.get_body_argument(name, default=_ARG_DEFAULT, strip=True)

  • 요청체에서 지정한 매개 변수name의 값을 되돌려줍니다. 같은 이름의 매개 변수가 여러 개 나타나면 마지막 값을 되돌려줍니다.
  • default는name 파라미터를 설정하지 않았을 때 되돌아오는 기본값입니다.default도 설정하지 않으면 tornado를 던집니다.web.MissingArgumentError 예외입니다.
  • strip은 좌우 양쪽의 공백 문자를 필터할지 여부를 표시합니다. 기본값은 필터입니다.
  • 요청체의 데이터에 대해 문자열을 요구하고 폼 인코딩 형식(url의 요청 문자열 형식과 동일), 즉 키1=value1 & 키2=value2, HTTP 헤더 헤더의'Content-Type'은 응용 프로그램/x-ww-form-urlencoded 또는 multipart/form-data입니다.요청체 데이터가 json이나xml인 경우 이 두 가지 방법으로 얻을 수 없습니다.

  •  

    2.4、self.get_body_arguments(name, strip=True)

  • 요청체에서 지정한 파라미터name의 값을 되돌려줍니다.list 목록을 되돌려줍니다. (name 파라미터가 한 값만 있어도)name 매개 변수를 찾지 못하면 빈 목록 [] 을 되돌려줍니다.
  • strip은 좌우 양쪽의 공백 문자를 필터할지 여부를 표시합니다. 기본값은 필터입니다.
  • 요청체의 데이터에 대해 문자열을 요구하고 폼 인코딩 형식(url의 요청 문자열 형식과 동일), 즉 키1=value1 & 키2=value2, HTTP 헤더 헤더의'Content-Type'은 응용 프로그램/x-ww-form-urlencoded 또는 multipart/form-data입니다.요청체 데이터가 json이나xml인 경우 이 두 가지 방법으로 얻을 수 없습니다.

  •  

    2.5、self.request.body

  • tornado의 매개 변수는self에 저장됩니다.request.body에서 json을 통과하면 바로 값을 얻을 수 있습니다: 데이터 = json.loads(self.request.body)

  •  

    2.6、self.get_argument(name, default=_ARG_DEFAULT, strip=True)

  • 요청체와 검색 문자열에서 지정한 매개 변수name의 값을 되돌려줍니다. 같은 이름의 매개 변수가 여러 개 나타나면 마지막 값을 되돌려줍니다.
  • default는name 파라미터를 설정하지 않았을 때 되돌아오는 기본값입니다.default도 설정하지 않으면 tornado를 던집니다.web.MissingArgumentError 예외입니다.
  • strip은 좌우 양쪽의 공백 문자를 필터할지 여부를 표시합니다. 기본값은 필터입니다.

  •  

    2.7、self.get_arguments(name, strip=True)

  • 요청체와 검색 문자열에서 지정한 파라미터name의 값을 되돌려줍니다.list 목록을 되돌려줍니다. (name 파라미터가 한 값만 있어도)name 매개 변수를 찾지 못하면 빈 목록 [] 을 되돌려줍니다.
  • strip은 좌우 양쪽의 공백 문자를 필터할지 여부를 표시합니다. 기본값은 필터입니다.

  •  
    예:
    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    import tornado.options #  options 
    
    tornado.options.define("port", default=8000, type=int, help=" ")
    
    class IndexHandler(tornado.web.RequestHandler):
        """ """
        def get(self):
            test = self.get_query_argument("test")
            self.write(test)
    
    if __name__ == "__main__":
        tornado.options.parse_config_file("./config")
    
        app = tornado.web.Application([
            (r"/", IndexHandler),
        ],debug=True)
    
        http_server = tornado.httpserver.HTTPServer(app)
        http_server.listen(tornado.options.options.port)
        tornado.ioloop.IOLoop.current().start()

     

    3. 정규 추출 매개 변수


    라우팅 맵에서도 정규 추출uri를 지원하며 추출된 파라미터는 RequestHandler에서 요청하는 방식에 대응하는 구성원 방법 파라미터로 사용됩니다.정규 표현식에서 이름을 정의하면 매개 변수는 이름에 따라 전달된다.이름이 정의되지 않으면 매개 변수가 순서대로 전달됩니다.추출된 매개 변수는 요청 방식에 대응하는 구성원 방법의 매개 변수가 될 것입니다.
    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    import tornado.options
    from tornado.options import options, define
    from tornado.web import RequestHandler
    
    define("port", default=8000, type=int, help=" ")
    
    class IndexHandler(RequestHandler):
        def get(self):
            self.write("hello world.")
    
    class SubjectCityHandler(RequestHandler):
        def get(self, subject, city):
            self.write(("Subject: %s
    City: %s" % (subject, city))) class SubjectDateHandler(RequestHandler): def get(self, date, subject): self.write(("Date: %s
    Subject: %s" % (date, subject))) if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application([ (r"/", IndexHandler), (r"/sub-city/(.+)/([a-z]+)", SubjectCityHandler), # (r"/sub-date/(?P.+)/(?P\d+)", SubjectDateHandler), #  ]) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.current().start()

     

    4. Tornado의 Request 가져오기 업로드 파일

    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    import tornado.options
    from tornado.options import options, define
    from tornado.web import RequestHandler
    
    define("port", default=8000, type=int, help=" ")
    
    class IndexHandler(RequestHandler):
        def get(self):
            self.write("hello world.")
    
    class UploadHandler(RequestHandler): 
        def post(self):
            files = self.request.files
            img_files = files.get('img')
            if img_files:
                #tornado.httputil.HTTPFile , :
                #1、filename  , form_filename1 , ;
                #2、body  ;
                #3、content_type  。  ,         
                img_file = img_files[0]["body"]
                file = open("./filename", 'w+')
                file.write(img_file)
                file.close()
            self.write("OK")
    
    if __name__ == "__main__":
        tornado.options.parse_command_line()
        app = tornado.web.Application([
            (r"/", IndexHandler),
            (r"/upload", UploadHandler),
        ])
        http_server = tornado.httpserver.HTTPServer(app)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.current().start()

    tornado.httputil.HTTPFile은 세 가지 속성이 있는 수신된 파일 객체입니다.
  • filename 파일의 실제 이름, form파일name1과 달리 사전의 키 이름은 폼에 대응하는 항목의 이름을 대표한다.
  • body 파일의 데이터 실체;
  • content_type 파일의 유형입니다.이 세 개의 대상 속성은 리퀘스트와 같은 키워드 인덱스를 사전처럼 지원할 수 있습니다.files["form_filename1"][0]["body"].

  • 좋은 웹페이지 즐겨찾기