flaskプロジェクトのその他の構成

3146 ワード

2.1 redisデータベース
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())