Flask quickstart¶
参照: | クイックスタート — flask-docs-ja 0.10-dev documentation |
---|
A Minimal Application: OK
Routing¶
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello World'
Variable Rules¶
@app.route('/user/<username>')
def show_user_profile(username):
return 'User %s' % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
return 'Post %d' % post_id
デフォルトでは以下の型の指定が可能
int: | 整数 |
---|---|
float: | 小数 |
path: | URLパス |
URL Building¶
@app.routeで追加したルートはurl_forでURLを取得することができる。:
>>> from flask import Flask, url_for
>>> app = Flask(__name__)
>>> @app.route('/')
... def index(): pass
...
>>> @app.route('/login')
... def login(): pass
...
>>> @app.route('/user/<username>')
... def profile(username): pass
...
>>> with app.test_request_context():
... print url_for('index')
... print url_for('login')
... print url_for('login', next='/')
... print url_for('profile', username='John Doe')
...
/
/login
/login?next=/
/user/John%20Doe
HTTP Methods¶
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
do_the_login()
else:
show_the_login_form()
- GET, HEAD, POST, PUT, DELETE, OPTIONS
Static Files¶
url_for('static', filename='style.css')
Rendering Templates¶
サンプルはFlaskrでOK
The Request Object¶
サンプルはFlaskrでOK
File Uploads¶
form側を enctype=”multipart/form-data”とした上で、 request.files[‘name’]でアクセスすることができる。:
from flask import request
from werkzeug ipmort secure_filename
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
f.save('/var/www/uploads/' + secure_filename(f.filename))
Cookies¶
get:
request.cookies.get('username')
set:
from flask import make_response
@app.route('/')
def index():
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username')
return resp
Redirect and Errors¶
from flask import abort, redirect, url_for, render_template
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
abort(401)
this_is_never_executed()
@app.errorhandler(404)
def page_not_found(error):
return render_template('page_not_found.html'), 404
Message Flashing¶
サンプルはFlaskrでOK
Logging¶
のちほど
Hooking in WSGI Middlewares¶
のちほど
Deploying to a Web Server¶
のちほど