Python 초보자가 Bottle을 사용해 보면 의외로 쉽게 움직여 주었다
소개
자신의 메모입니다, 경위는 아래.
실행 환경
하고 싶은 일
했던 일
우선 움직여 보자.
어려운 것은 생각하지 않고, 우선은 브라우저에서 Hello World가 표시되는 곳까지 해 본다.
#importするためにpip installしておく
$ pip install bottle
# -*- coding:utf-8 -*-
from bottle import route, run
@route('/hello')
def hello():
return "Hello World!"
run(host='localhost', port=8080, debug=True)
PyCharm에서 Run하고 브라우저에서 열어보세요.
http://localhost:8080/hello
이것만으로 Hello World가 브라우저에서 볼 수 있게 되었다!! 대단한 Bottle
역동적 인 라우팅을 시도합니다.
# -*- coding:utf-8 -*-
from bottle import route, run
@route('/hello/')
@route('/hello/<user>')
def hello(user="taro"):
return "Hello {user}".format(user=user)
@route('/date/<month:re:[a-z]+>/<day:int>/<path:path>')
def date(month, day, path):
return "{month}/{day} {path}".format(month=month, day=day, path=path)
run(host='localhost', port=8080, debug=True)
받은 매개변수 사용
실행되는 메소드의 인수에 디폴트를 정의해 두는 것으로 user가 건네받지 않을 때에도 표시할 수 있다.
http://localhost:8080/hello/
http://localhost:8080/hello/masaibar
파라미터에 제약을 준다
간단한 값 제약을 줄 수 있습니다.
#importするためにpip installしておく
$ pip install bottle
# -*- coding:utf-8 -*-
from bottle import route, run
@route('/hello')
def hello():
return "Hello World!"
run(host='localhost', port=8080, debug=True)
# -*- coding:utf-8 -*-
from bottle import route, run
@route('/hello/')
@route('/hello/<user>')
def hello(user="taro"):
return "Hello {user}".format(user=user)
@route('/date/<month:re:[a-z]+>/<day:int>/<path:path>')
def date(month, day, path):
return "{month}/{day} {path}".format(month=month, day=day, path=path)
run(host='localhost', port=8080, debug=True)
http://localhost:8080/date/april/29//dev/null
GET, POST 해보기
GET이나 POST등의 어노테이션에는 2 종류의 쓰는 방법이 있는 것 같다.
@get ('/hoge') 와 @route ('/hoge', method='GET') 는 같은 동작을 한다.
전달 된 값은 다음 변수를 참조하여 수신됩니다.
그 밖에도 헤더나 리퀘스트 본문 등 여러가지 데이터를 받을 수 있다. 참고
# -*- coding:utf-8 -*-
from bottle import route, run
from bottle import get, post, request
@route('/login', method='GET') # or @get('/login')
def login():
username = request.query.get('user')
password = request.query.get('pass')
#GETで何も渡されていない時はusername,passwordに何も入れない
username = "" if username is None else username
password = "" if password is None else password
return '''
<form action="/login" method="post">
Username: <input name="username" type="text" value="{username}"/>
Password: <input name="password" type="password" value="{password}"/>
<input value="Login" type="submit" />
</form>
'''.format(username=username, password=password)
@route('/login', method='POST') # or @post('/post')
def do_login():
username = request.forms.get('username')
password = request.forms.get('password')
return "{username} {password}".format(username=username, password=password)
run(host='localhost', port=8080, debug=True)
GET
http://localhost:8080/login
http://localhost:8080/login?user=hoge&pass=fuga
POST
오류 페이지 보기
# -*- coding:utf-8 -*-
from bottle import route, run
from bottle import error
@route('/hello')
def hello():
return "Hello World!"
@error(404)
def error404(error):
return "Nothing here sorry {error}".format(error=error)
run(host='localhost', port=8080, debug=True)
일부러 없는 URL을 밟아 본다.
http://localhost:8080/hellow
결론
생각보다 쉽게 움직여주고 솔직히 놀랐습니다.
이번에는 특히 템플릿이라든지 생각 없이 움직이는 것에 중점을 두고 있었습니다만, 조사해 보면 템플릿 엔진만 바꾸어 사용하고 있는 사람이 상당히 있는 느낌이었습니다.
( Jinja2 가 인기인가?)
참고
Tutorial — Bottle 0.13-dev documentation : ht tp // 붐 tぇpy. rg / cs / / v / tho l. HTML
파이썬 웹 프레임 워크 6 가지를 간략하게 소개 - Mojilog : htp // 모지 x. rg / 2013/04/13 / py 쵸시 x - 와 fs
Bottle Request/Response 객체 마스터 - Qiita : ぃ tp // 이 m / 토타 카_ 사촌 / ms / 62fc4d58d1 7867 A158
파이썬에서 None 비교는 == 대신 is를 사용합니다 - 안녕하세요 안녕하세요 monmon입니다! : h tp // Monmon. 는 bぉ. jp/엔트리/20110214/1297710749
Reference
이 문제에 관하여(Python 초보자가 Bottle을 사용해 보면 의외로 쉽게 움직여 주었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/masaibar/items/e3b6911aee6741037549
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python 초보자가 Bottle을 사용해 보면 의외로 쉽게 움직여 주었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masaibar/items/e3b6911aee6741037549텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)