2013-04-29 5 views
8

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

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) 

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

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)) 

तो,, कुप्पी के लॉगिन खाका वस्तु में नहीं किया जा सकता क्या मैं पूछना चाहता हूँ है? THX!

उत्तर

3

इसलिए यह कहा जाता setup_app

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

26

यह खाका के पंजीकरण पर 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 तब चलाया जाएगा जब ब्लूप्रिंट पहले ऐप में पंजीकृत होगा।

संबंधित मुद्दे

 संबंधित मुद्दे