flask फ्लास्क-लॉगिन का उपयोग ब्लूप्रिंट ऑब्जेक्ट में नहीं किया जा सकता है?




blueprint flask-login (2)

फ्लास्क-लॉगिन और ब्लूप्रिंट के बारे में मेरे पास एक सवाल है।

admin.py

admin = Blueprint('admin', __name__)
login_manager = LoginManager()
login_manager.setup_app(admin)

@login_manager.user_loader
def load_user(userid):
    return User.query.get(int(userid))

@admin.route('/login', methods=["GET", "POST"])
def login():
    login_form = LoginForm()
    if request.method == 'POST':
    #####user validation####
        login_user(user)
        return redirect('/')
    return render_template('admin/login.html', login_form=login_form)

run.py

app = Flask(__name__)
app.config.from_object(blog_config)
app.register_blueprint(admin)
if __name__ == "__main__":
    app.run(debug=True)

लेकिन जब मैं एक फ़ॉर्म पोस्ट करता हूं, और लॉगिन_यूसर (उपयोगकर्ता) का उपयोग करता हूं, तो एक त्रुटि हुई।

AttributeError: 'Flask' object has no attribute 'login_manager'

फिर मैं run.py में फ्लास्क-लॉगिन का उपयोग करने का प्रयास करता हूं, यह ठीक काम करता है।

run.py

login_manager = LoginManager()
login_manager.setup_app(admin)

@login_manager.user_loader
def load_user(userid):
    return User.query.get(int(userid))

तो, मैं क्या पूछना चाहता हूं, फ्लास्क-लॉगिन का उपयोग ब्लूप्रिंट ऑब्जेक्ट में नहीं किया जा सकता है? धन्यवाद!


यही कारण है कि यह setup_app बुलाया

बस अपने run.py इनिशियलाइज़ ले run.py और एप को पैरामीटर के रूप में पास करें और लॉगिन ही व्यवस्थापक ब्लूप्रिंट के अंदर रह सकता है


ब्लूप्ंट के पंजीकरण पर LoginManager.setup_app () भी संभव है:

admin = Blueprint('admin', __name__)
login_manager = LoginManager()

@admin.record_once
def on_load(state):
    login_manager.init_app(state.app)

on_load चलाया जाएगा जब ब्लूप्रिंट पहले एप के लिए पंजीकृत है।