import os from flask import Flask, render_template, request, session from flask_sqlalchemy import SQLAlchemy app = Flask(__name__, template_folder='template', static_url_path='/resource', static_folder='resource') # app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:220113@localhost:3306/woniu?charset=utf8' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SECRET_KEY'] = os.urandom(24) db = SQLAlchemy(app) # 定义404错误页面 @app.errorhandler(404) def page_not_found(e): return render_template('error-404.html') # 定义500错误页面 @app.errorhandler(500) def server_error(e): return render_template('error-500.html') # 定义过滤器,side的长度保持一致 def do_truncate( str, length = 100, end = '...', ): count = 0 new_str = '' for c in str: if count > length: break new_str += c if ord(c) <= 255: # 这里认为一个汉字的长度是两个字符,一个其他字母的长度是一个字符 count += 1 else: count += 2 if count < length: end = '' return new_str + end # 注册过滤器 app.jinja_env.filters.update(truncate = do_truncate) # # 定义全局拦截器,实现自动登录 # @app.before_request # def before(): # url = request.path # # pass_list = ['/user', '/login', '/logout'] # if url in pass_list or url.endswith('.js') or url.endswith('.jpg'): # pass # # elif session.get('islogin') != 'true': # username = request.cookies.get('username') # password = request.cookies.get('password') # if username != None and password != None: # from module.user import Users # user = Users() # result = user.find_by_username(username) # if len(result) == 1 and result[0].password == password: # session['islogin'] = 'true' # session['userid'] = result[0].userid # session['username'] = username # session['nickname'] = result[0].nickname # session['role'] = result[0].role # @app.before_request def before(): url = request.path pass_list = ['/user', '/login', '/logout'] if url in pass_list or url.endswith('.js') or url.endswith('.jpg'): pass elif session.get('islogin') != 'true': # 检查用户是否已经登录 if session.get('islogin') is not None: # 如果用户已经登录,则跳过自动登录 pass else: # 如果用户没有登录,则尝试从 session 中获取用户登录信息 username = session.get('username') if username is not None: # 如果 session 中存在用户名,则尝试自动登录 from module.user import Users user = Users() result = user.find_by_username(username) if len(result) == 1: # 如果用户存在,则更新 session 信息 session['islogin'] = 'true' session['userid'] = result[0].userid session['nickname'] = result[0].nickname session['role'] = result[0].role # 全文可以直接使用article_type @app.context_processor def gettype(): type={ '1':'情感', '2':'商业', '3':'健康', } return dict(article_type=type) # 确保在应用上下文中调用,例如在命令行脚本或测试中 with app.app_context(): db.create_all() # 创建所有数据库表