이번 블로그에서는 Tornado 웹 프레임워크를 사용하여 맞춤형 검색 기능을 구현하는 방법에 대해 알아보겠습니다. Tornado는 Python으로 작성된 비동기 웹 프레임워크로, 높은 성능과 확장성을 제공합니다.
필요한 라이브러리 설치
먼저, Tornado를 사용하기 위해 필요한 라이브러리를 설치해야 합니다. 아래 명령을 사용하여 설치할 수 있습니다.
pip install tornado
기본 서버 구성
Tornado를 사용하여 기본적인 웹 서버를 설정합니다. 아래의 코드는 app.py
파일에 작성해야 합니다.
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
위 코드에서는 /
경로에 대한 요청을 처리하는 MainHandler
클래스를 정의합니다. 해당 요청이 들어오면 index.html
파일을 렌더링하여 응답합니다. make_app
함수에서는 해당 핸들러를 등록하고, 서버를 띄우는 작업을 수행합니다.
검색 기능 추가
이제 검색 기능을 추가해 보겠습니다. MainHandler
클래스를 수정하여 검색 기능을 처리하도록 구현합니다.
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
keyword = self.get_argument("q", default="")
# 검색 로직 구현
results = self.search(keyword)
self.render("index.html", results=results)
def search(self, keyword):
# 실제로 검색하는 로직을 작성합니다.
# 결과를 리스트로 반환합니다.
pass
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
위 코드에서는 get
메서드에서 self.get_argument("q", default="")
를 사용하여 검색 키워드를 받아옵니다. search
메서드를 통해 실제 검색 로직을 구현하고, 그 결과를 index.html
파일에 전달합니다.
검색 결과 템플릿 구성
마지막으로, index.html
파일을 작성하여 검색 결과를 표시합니다.
<!DOCTYPE html>
<html>
<head>
<title>Custom Search</title>
</head>
<body>
<form action="/" method="get">
<input type="text" name="q" value="{{ keyword }}">
<button type="submit">Search</button>
</form>
{% if results %}
<h2>Search Results:</h2>
<ul>
{% for result in results %}
<li>{{ result }}</li>
{% endfor %}
</ul>
{% endif %}
</body>
</html>
위 코드에서는 검색어를 입력하기 위한 입력 폼과 검색 결과를 표시하기 위한 코드를 작성하였습니다. {% if results %}
와 {% for result in results %}
는 검색 결과가 있는 경우에만 결과를 표시하도록 조건문을 사용한 예시입니다.
이제 위의 코드를 통해 Tornado를 사용하여 맞춤형 검색 기능을 구현할 수 있습니다. 자세한 내용은 Tornado 공식 문서를 참고하시기 바랍니다.