flaskプロジェクトのその他の構成
3146 ワード
2.1 redisデータベース
2.2 redis設定とセッション設定
2.3対応する設定でcsrf_を設定するtoken
2.4統合処理404
2.5ログの設定
2.6装飾器の設置
2.7七牛雲伝の写真
2.1.1
sudo apt-get install redis-server
2.1.2
redis redis-server
redis service redis stop
redis redis-cli
/ quit/exit
redis ps aux | grep redis
select 10
2.2.3redis python
from redis import *
init
host localhost,port 6379,db 0
sr = StrictRedis(host='localhost', port=6379, db=0)
2.2 redis設定とセッション設定
# redis , ,
redis_store = StrictRedis(host='localhost', port=6379, db=0, , decode_responses = True)
# Session
SESSION_TYPE = "redis" # session redis
SESSION_USE_SIGNER = True # cookie session_id
SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT) # redis
SESSION_PERMANENT = False #
PERMANENT_SESSION_LIFETIME = 86400 * 2 # session ,
Session(app)
2.3対応する設定でcsrf_を設定するtoken
# ,
@app.after_request
def after_request(response):
""" """
csrf_token = generate_csrf()
response.set_cookie("csrf_token", csrf_token)
return response
2.4統合処理404
@app.errorhandler(404)
@user_login_data
def page_not_found(e):
user = g.user
data = {"user": user.to_dict() if user else None}
return render_template("news/404.html", data=data)
2.5ログの設定
def setup_log(config_name):
""" """
#
logging.basicConfig(level=config[config_name].LOG_LEVEL) # debug
# , 、 (maxBytes)、 (backupCount)
file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)
#
formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
#
file_log_handler.setFormatter(formatter)
# (flask app )
logging.getLogger().addHandler(file_log_handler)
2.6装飾器の設置
def user_login_data(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
user_id = session.get("user_id", None)
user = None
if user_id:
#
try:
user = User.query.get(user_id)
except Exception as e:
current_app.logger.error(e)
# g
g.user = user
return f(*args, **kwargs)
return wrapper
app.add_template_filter(do_index_class, "index_class")
2.7七牛雲伝の写真
from qiniu import Auth, put_data
access_key = "yV4GmNBLOgQK-1Sn3o4jktGLFdFSrlywR2C-hvsW"
secret_key = "bixMURPL6tHjrb8QKVg2tm7n9k8C7vaOeQ4MEoeW"
bucket_name = "ihome"
def storage(data):
try:
q = Auth(access_key, secret_key)
token = q.upload_token(bucket_name)
ret, info = put_data(token, None, data)
print(ret, info)
except Exception as e:
raise e
if info.status_code != 200:
raise Exception(" ")
return ret["key"]
if __name__ == '__main__':
file = input(' ')
with open(file, 'rb') as f:
storage(f.read())