【发布时间】:2019-07-13 09:11:10
【问题描述】:
我也尝试使用 Flask-Blueprint 将 Flask-Admin 添加到我的项目中,然后我遇到了这个问题
## UnboundLocalError: local variable 'admin' referenced before assignment ##
在我搞砸之后,我遇到了另一个问题,比如
## A blueprint's name collision occurred … Both share the same name “admin” ##
但随后我删除了所有已更改的内容并返回第一个问题!
- FlaskBackEnd/__ 初始化 __.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
from flask_mail import Mail
from FlaskBackEnd.config import Config
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
db = SQLAlchemy()
bcrypt = Bcrypt()
login_manager = LoginManager()
login_manager.login_view = 'users.login'
login_manager.login_message_category = 'info'
mail = Mail()
admin = Admin(name='Admin', template_mode='bootstrap3')
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(Config)
# initiate flask extentions
db.init_app(app)
bcrypt.init_app(app)
login_manager.init_app(app)
mail.init_app(app)
admin.init_app(app)
# Importing Blueprint packages
from FlaskBackEnd.main.routes import main
from FlaskBackEnd.posts.routes import posts
from FlaskBackEnd.users.routes import users
from FlaskBackEnd.errors.handler import errors
from FlaskBackEnd.admin.routes import admin, user_datastore
# Register blueprint app for ready to use
app.register_blueprint(main)
app.register_blueprint(posts)
app.register_blueprint(users)
app.register_blueprint(errors)
app.register_blueprint(admin)
return app
- FlaskBackEnd/admin/roundes.py
from flask import render_template, Blueprint
from FlaskBackEnd.models import User, Post
from FlaskBackEnd import db, admin
from flask_admin.contrib.sqla import ModelView
from flask_admin.contrib.fileadmin import FileAdmin
from wtforms.fields import PasswordField
import os.path as op
from flask_security import (current_user, login_required, RoleMixin, Security,
SQLAlchemyUserDatastore, UserMixin, utils)
admin = Blueprint('admin', __name__)
admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(Post, db.session))
path = op.join(op.dirname(__file__), 'static')
admin.add_view(FileAdmin(path, '/static/img/', name='File Explore'))
【问题讨论】:
-
回溯(最近一次调用最后一次):app = create_app() admin.init_app(app) UnboundLocalError: 分配前引用了局部变量 'admin'
-
您正在导入
admin之后使用它。 -
你能给我解释一下吗?我试图解决,但它不会工作
标签: python flask flask-sqlalchemy flask-admin