Python의 웹 프레임워크를 사용한 Tornado의 2
개시하다
요즘Tornado 놀고 있기 때문에 사용법을 총괄해야 합니다.
이번에는 템플릿을 사용해 보자.사용해 보았을 뿐 해설은 그다지 하지 않았다.다음을 기대하다.그리고 질문과 요구가 있으면 대답할게요.
운영 환경
나의 실행 환경은 다음과 같지만 파이톤이 일하는 환경은 문제없을 것이다.
관련 보도
템플릿 엔진
템플릿 엔진은 템플릿(모형)과 입력 데이터를 합성하여 문자열을 만드는 구조입니다.이번에는 파이썬의 웹 템플릿 엔진에만 한정됩니다.이 경우 템플릿 엔진은 HTML의 템플릿 내부에 파이썬 코드를 부분적으로 포함시켜 최종적으로 HTML을 생성하는 구조를 말한다.좀 어려우면 아래 위키백과 글을 참고하거나 구글에서 찾아보세요.
Tornado의 템플릿 엔진
백문이 불여일견, 우선 템플릿 엔진을 사용하는 예다.사용하는 index입니다.개조해 보겠습니다.또한 디렉터리 구성은 저번의 디렉터리 구성을 계승했다.
이것은 매우 지루한 예이니 지금 시간을 보여 주시오.
코드
지난번부터 변경된 점은 다음과 같다.
{datetime.now ()}
<!DOCTYPE html>
<html>
<head>
<title>Hello, world</title>
<link rel="stylesheet" href="{{ static_url("style.css") }}"/>
{% from datetime import datetime %}
</head>
<body>
<div id="container">
<div id="main">
<p>Hello, world</p>
<p>{{datetime.now()}}</p>
</div>
</div>
</body>
</html>
실행 예
브라우저 액세스를 통해 현재 시간을 얻을 수 있습니다.
저번
해설
Python에서는 익숙한 다음 코드를 {%와%} (또는 {및}) 로 묶어서 HTML에 직접 기술합니다.
# datetimeモジュールからdatetimeをインポート
from datetime import datetime
# datetime.nowメソッドで現在時刻を取得
datetime.now()
지금까지 계속 쓰고 있어요.{{ static_url("style.css") }}
템플릿 엔진의 기능이기도 하다.{%와%}(또는 {와})에 포함된 문자열은 평가 결과로 바뀝니다.간단하네.
Tornado의 템플릿 엔진에서 기본적으로 HTML 파일에서 {%와%}(또는 {{와})로 파이톤 코드를 포위할 때 그 평가 결과는 HTML에 삽입됩니다.
for,while,if,try-cxcept 등 제어 구조도 쓸 수 있습니다.
서버 프로그램의 계산 결과를 표시합니다
다음은 서버 프로그램(server.py)의 계산 결과를 어떻게 받아들이는지 설명합니다.
post () 방법과 get () 방법의 설명은 다음 이후로 잠시 사용해 보십시오.
취직 활동 때 배려받은 글자수 통계 프로그램을 써 보세요.
디렉토리 구조
$ tree --charset=x
.
|-- server.py
|-- static
| `-- style.css
`-- templates
|-- index.html
`-- result.html
코드
index.) 게시된 POST 요청의 결과를 post 방법으로 받습니다.result.변수len>바디를 통해 표시됩니다.
지루한 예처럼 보이지만 그렇게 할 수 있다면 파이톤을 통해 계산 결과를 전달할 수 있기 때문에 CGI 전성기 웹 애플리케이션은 쓸 수 있을 것 같다.
server.py#!/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
def post(self):
body = self.get_argument('body')
len_body = len(body)
self.render("result.html",
len_body = len_body
)
application = tornado.web.Application([
(r"/", MainHandler)
],
template_path=os.path.join(os.getcwd(), "templates"),
static_path=os.path.join(os.getcwd(), "static"),
)
if __name__ == "__main__":
application.listen(8888)
print("Server is up ...")
tornado.ioloop.IOLoop.instance().start()
p 태그의 스타일을 삭제합니다.
style.cssbody {
font-family:'Lucida Grande', 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', "MS Pゴシック", sans-serif;
width: 80%;
margin: 0 auto;
}
index.단어 수를 계산하려는 문자열을 입력하는 화면을 표시합니다.
index.html<!DOCTYPE html>
<html>
<head>
<title>文字数カウンタ</title>
<link rel="stylesheet" href="{{ static_url("style.css") }}"/>
</head>
<body>
<div id="container">
<div id="main">
<form method="post" action="/">
<textarea name="body" cols="40" rows="4"></textarea>
<input type="submit">
</form>
</div>
</div>
</body>
</html>
result.) 계산 결과를 표시합니다.
result.html<!DOCTYPE html>
<html>
<head>
<title>文字数カウンタ</title>
<link rel="stylesheet" href="{{ static_url("style.css") }}"/>
</head>
<body>
<div id="container">
<div id="main">
<p>{{len_body}}</p>
</div>
</div>
</body>
</html>
실행 예
확실한 글자수는 셀 수 있다.환경에 따라 글자 수가 다를 수 있습니다.
tornado.template — Flexible output generation
다음 계획
확장자 수.원한다면 TF/IDF 유사도 검색 같은 내용을 쓸 수도 있습니다.
Reference
이 문제에 관하여(Python의 웹 프레임워크를 사용한 Tornado의 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/intermezzo-fr/items/cea126c0a6e9e879f216
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ tree --charset=x
.
|-- server.py
|-- static
| `-- style.css
`-- templates
|-- index.html
`-- result.html
#!/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
def post(self):
body = self.get_argument('body')
len_body = len(body)
self.render("result.html",
len_body = len_body
)
application = tornado.web.Application([
(r"/", MainHandler)
],
template_path=os.path.join(os.getcwd(), "templates"),
static_path=os.path.join(os.getcwd(), "static"),
)
if __name__ == "__main__":
application.listen(8888)
print("Server is up ...")
tornado.ioloop.IOLoop.instance().start()
body {
font-family:'Lucida Grande', 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', "MS Pゴシック", sans-serif;
width: 80%;
margin: 0 auto;
}
<!DOCTYPE html>
<html>
<head>
<title>文字数カウンタ</title>
<link rel="stylesheet" href="{{ static_url("style.css") }}"/>
</head>
<body>
<div id="container">
<div id="main">
<form method="post" action="/">
<textarea name="body" cols="40" rows="4"></textarea>
<input type="submit">
</form>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>文字数カウンタ</title>
<link rel="stylesheet" href="{{ static_url("style.css") }}"/>
</head>
<body>
<div id="container">
<div id="main">
<p>{{len_body}}</p>
</div>
</div>
</body>
</html>
확장자 수.원한다면 TF/IDF 유사도 검색 같은 내용을 쓸 수도 있습니다.
Reference
이 문제에 관하여(Python의 웹 프레임워크를 사용한 Tornado의 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/intermezzo-fr/items/cea126c0a6e9e879f216텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)