微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NameError:使用蓝图重构后未定义名称db

如何解决NameError:使用蓝图重构后未定义名称db

我尝试使用蓝图重新构建我的应用程序,一旦完成,我收到错误:“NameError: name 'db' is not defined”我不明白为什么会出现错误

这是我的 init.py 文件: app 和 db 被初始化的地方

  import os
  from flask import Flask
    
    
    
    def create_app():
        app = Flask(__name__)
    
        from svc.base.routes import base
        from svc.admin.routes import admin
        from svc.auth.routes import auth
        from flaskext.MysqL import MysqL
    
        db = MysqL(app)
        db.init_app(app)
    
        app.config['SECRET_KEY'] = 'MySecretKey'
        app.config['MysqL_DATABSE_HOST'] = os.environ.get('DB_HOST')
        app.config['MysqL_DATABASE_PORT'] = os.environ.get('DB_PORT')
        app.config['MysqL_DATABASE_USER'] = os.environ.get('DB_USER')
        app.config['MysqL_DATABASE_PASSWORD'] = os.environ.get('DB_PASSWORD')
        app.config['MysqL_DATABASE_DB'] = os.environ.get('DB_DATABASE')
        app.register_blueprint(admin)
        app.register_blueprint(base)
        app.register_blueprint(auth)
    
        return app
    

我的routes.py文件,重组后出现错误

    from flask import Blueprint,render_template
from .forms import LoginForm
from svc import create_app



auth = Blueprint('auth',__name__,template_folder='templates')


@auth.route('/login',methods=['POST','GET'])
def login():
    form=LoginForm()
    if form.validate_on_submit():
        email = form.email.data
        password = (form.password.data).encode('utf-8')

        cur = db.get_db().cursor()
        cur.execute("SELECT * FROM `user` WHERE `user_email` = %s",(form.email.data))
        user = cur.fetchone()
        cur.close()
        if user:
            username = user[1]
            role = user[5]
            session_id = user[0]
            if bcrypt.hashpw(password,(user[4].encode('utf-8'))) == (user[4].encode('utf-8')):
              session['loggedin'] = True
              session['id'] = session_id
              session['user'] = username
              session['role'] = role
              flash(f'Login Successful for {user[1]} {user[2]}',category='success')
              return redirect(url_for('account'))
            else:
                flash(f'Login Unsuccessful - Incorrect Password',category='danger')
        else:
            flash(f'Login Unsuccessful - Incorrect Email',category='danger')
    return render_template('login.html',title='Login',form=form)

解决方法

git add . git add -A git commit -m ".." git push heroku master heroku run python manage.py makemigrations heroku run python manage.py migrate contacts heroku ps:scale web=1 heroku local web 是通过运行 flask-mysql 安装的。在您的 pip3 install flask-mysqlDB 中,您需要从 __init__.py 导入 MySQL 并将其初始化如下:

flask_mysqldb

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。