Flask小貼士

原文請點擊這里

404跳轉頁面

定義404跳轉頁面

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

手動跳轉404

abort(404)

SECRET_KEY的生成

import os
os.urandom(24)

多個url指向

@app.route('/')
@app.route('/index')

不管post/get使用統一的接收

from flask import request
args = request.args if request.method == 'GET' else request.form
a = args.get('a', 'default')

獲取post提交中的checkbox

{%for page in pages %}
<tr><td><input type=checkbox name=do_delete value="{{ page['id'] }}"></td><td>
{%endfor%}

page_ids = request.form.getlist("do_delete")

在request開始結束dosomething

from flask import g

app = .....

@app.before_request
def before_request():
    g.session = create_session()

@app.teardown_request
def teardown_request(exception):
    g.session.close()

注冊Jinja2模板中使用的過濾器

@app.template_filter('markdown')
def markdown(value):
    u'''
    markdown
    '''
    renderer = HighlightRenderer()
    markdown = mistune.Markdown(renderer=renderer)
    return markdown(value)

模板中使用多個過濾器

{{ art.content|markdown|safe }}

注冊Jinja2模板中使用的全局變量

JINJA2_GLOBALS = {'MEDIA_PREFIX': '/media/'}
app.jinja_env.globals.update(JINJA2_GLOBALS)

定義應用使用的template和static目錄

app = Flask(__name__, template_folder=settings.TEMPLATE_FOLDER, static_folder = settings.STATIC_PATH)

上傳文件

<form action="/image/upload/" method="post" enctype="multipart/form-data">
<input type="file" name="upload" />

接收

f = request.files.get('upload')
img_data = f.read()

直接返回某個文件

return send_file(settings.TEMPLATE_FOLDER + 'tweet/tweet_list.html')

獲取用戶真實ip

real_ip = request.headers.get('X-Real-Ip', request.remote_addr)

return json & jsonp

import json
from flask import jsonify, Response, json

data = [] # or others
return jsonify(ok=True, data=data)

jsonp_callback =  request.args.get('callback', '')
if jsonp_callback:
    return Response(
            "%s(%s);" % (jsonp_callback, json.dumps({'ok': True, 'data':data})),
            mimetype="text/javascript"
            )
return ok_jsonify(data)

在flask中執行sql

sql = 'select * from table'
db.session.connection().execute(sql).fetchall()

返回如下格式

[(u'Wendy Williams, wendy@aol.com',)]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容