Python3 – Tornado의 Request
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)
2.2、self.get_query_arguments(name, strip=True)
2.3、self.get_body_argument(name, default=_ARG_DEFAULT, strip=True)
2.4、self.get_body_arguments(name, strip=True)
2.5、self.request.body
2.6、self.get_argument(name, default=_ARG_DEFAULT, strip=True)
2.7、self.get_arguments(name, strip=True)
예:
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은 세 가지 속성이 있는 수신된 파일 객체입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
#2_Raspberry Pi 3B+에서 LINE에 일기 예보 알림도쿄에 와서 갑자기 비가 오는 경우가 많습니다. "아침 제대로 일기 예보를 체크해 두면..."라고 후회하는 것이 자주. LINE에 매일 아침 일기 예보를 보내 주시면 좋지 않아? 라고 생각하고 만들어 보기로 했습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.