flask学习记录

flask学习记录尽量将学习的部分写到了一个文件中。
数据库交互部分还是用python-mysql。
主要是学习,不考虑交互,大并发部分。
详细结构在附件中。

#!/bin/env python
# -*- coding:utf-8 -*-
# Date:        2015-04-01
# Author:      simonzhang
# web:         www.simonzhang.net
# Email:       simon-zzm@163.com
#                   _ooOoo_
#                  o8888888o
#                  88" . "88
#                  (| -_- |)
#                  O\  =  /O
#               ____/`---'\____
#             .'  \\|     |//  `.
#            /  \\|||  :  |||//  \
#           /  _||||| -:- |||||-  \
#           |   | \\\  -  /// |   |
#           | \_|  ''\---/''  |   |
#           \  .-\__  `-`  ___/-. /
#         ___`. .'  /--.--\  `. . __
#      ."" '<  `.___\_<|>_/___.'  >'"".
#     | | :  `- `.;`\ _ /`;.`/ - ` : | |
#     \  \ `-.   \_ __\ /__ _/   .-` /  /
#======`-.____`-.___\_____/___.-`____.-'======
#                   `=---='
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  佛祖保佑 代码高性能 不宕机 无bug
### END INIT INFO
import os
from flask import Flask, url_for
from flask import request, render_template, redirect
from flask import session, escape
# 上传使用
from werkzeug import secure_filename
# 导入配置文件
from config import * 
# 还是使用python mysql获取数据
from mysqlrun import *

app = Flask(__name__)

# 过滤后缀
def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS

# 测试GET和POST,文件上传部分
# 测试GET的链接 http://127.0.0.1:5000/test?name=simonzhang.net
@app.route('/test', methods=['GET', 'POST'])
def test(name=None):
    if request.method == 'GET':
        if request.args.get('name',''):
            _name = request.args.get('name','')
        else:
            _name = 'hi'
        return render_template('test.html', name=_name)
    elif request.method == 'POST':
        file = request.files['upfile']
        # 上传了真实文件,并且后缀是通过的才保存
        if file and allowed_file(file.filename):
            # 此部分需要使用 from werkzeug import secure_filename
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(file.filename)))
        return render_template('test.html', name="ok")
    else:
        pass

# 测试cookie 当前还未完全成功
from flask import make_response
@app.route('/testcookie', methods=['GET'])
def testcookie():
    if request.method == 'GET':
        get_type = request.args.get('t','')
        get_value = request.args.get('v','')
        if get_type == 'r':
            _v = request.cookies.get('username')
            return 'user name : %s' % _v
        else:
            #resp = make_response(render_template('/'))
            request.set_cookie('username', get_value)
            return 'ok !!@'

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

# 判断是否登陆
@app.route('/')
def index():
    if 'username' in session:
        return 'Logged in as %s' % escape(session['username'])
    return 'You are not logged in'

# 登陆,简单的登陆页面,使用session
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return '''
        

''' # 注销 @app.route('/logout') def logout(): session.pop('username', None) return redirect(url_for('index')) if __name__ == '__main__': #app.debug = False app.debug = True # 上传部分 app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER app.config['MAX_CONTENT_LENGTH'] = UPLOAD_FILE_SIZE # 安全 app.secret_key = secret_key app.run(host = '0.0.0.0', port=500)

flask-study

发表评论

电子邮件地址不会被公开。 必填项已用*标注