python – flask – NameError:未定义名称’app’
发布时间:2020-12-20 12:07:53 所属栏目:Python 来源:网络整理
导读:我正在通过下面的脚本运行Flask(run.py) #!flask/bin/pythonfrom app import appapp.run(debug=True) 运行脚本时,我有这个回溯 File "./run.py",line 2,in module from app import app File "/home/andy.kwok/microblog/app/__init__.py",line 11,in module
我正在通过下面的脚本运行Flask(run.py)
#!flask/bin/python from app import app app.run(debug=True) 运行脚本时,我有这个回溯 File "./run.py",line 2,in <module> from app import app File "/home/andy.kwok/microblog/app/__init__.py",line 11,in <module> lm.init_app(app) NameError: name 'app' is not defined 我试图从app导入应用程序添加到models.py和models.py但它不起作用. 我究竟做错了什么? 我的__init__.py from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy import os from flask.ext.login import LoginManager from flask.ext.openid import OpenID from config import basedir lm= LoginManager() lm.init_app(app) oid = OpenID(app,os.path.join(basedir,'tmp')) lm.login_view = 'login' app = Flask(__name__) app.config.from_object('config') db = SQLAlchemy(app) from app import views,models 我的models.py from app import db class User(db.Model): id = db.Column(db.Integer,primary_key=True) nickname = db.Column(db.String(64),index=True,unique=True) email = db.Column(db.String(120),unique=True) posts = db.relationship('Post',backref='author',lazy='dynamic') def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): try: return unicode(self.id) # python 2 except NameError: return str(self.id) # python 3 def __repr__(self): return '<User %r>' % (self.nickname) 我的views.py from flask import render_template,flash,redirect,session,url_for,request,g from flask.ext.login import login_user,logout_user,current_user,login_required from app import app from app import db from app import lm from app import oid from .forms import LoginForm from .models import User @app.route('/') @app.route('/index') @login_required def index(): user = g.user posts = [ { 'author': {'nickname': 'John'},'body': 'Beautiful day in Portland!' },{ 'author': {'nickname': 'Susan'},'body': 'The Avengers movie was so cool!' } ] return render_template('index.html',title='Home',user=user,posts=posts) @app.route('/login',methods=['GET','POST']) @oid.loginhandler def login(): if g.user is not None and g.user.is_authenticated(): return redirect(url_for('index')) form = LoginForm() if form.validate_on_submit(): session['remember_me'] = form.remember_me.data return oid.try_login(form.openid.data,ask_for=['nickname','email']) return render_template('login.html',title='Sign In',form=form,providers=app.config['OPENID_PROVIDERS']) @lm.user_loader def load_user(id): return User.query.get(int(id)) @oid.after_login def after_login(resp): if resp.email is None or resp.email == "": flash('Invalid login. Please try again.') return redirect(url_for('login')) user = User.query.filter_by(email=resp.email).first() if user is None: nickname = resp.nickname if nickname is None or nickname == "": nickname = resp.email.split('@')[0] user = User(nickname=nickname,email=resp.email) db.session.add(user) db.session.commit() remember_me = False if 'remember_me' in session: remember_me = session['remember_me'] session.pop('remember_me',None) login_user(user,remember = remember_me) return redirect(request.args.get('next') or url_for('index')) @app.before_request def before_request(): g.user= current_user 解决方法
您在导入之前使用该应用程序,此处为lm.init_app(app),尚未定义应用程序.
它应该如下所示: from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy import os from flask.ext.login import LoginManager from flask.ext.openid import OpenID from config import basedir app = Flask(__name__) app.config.from_object('config') lm= LoginManager() lm.init_app(app) oid = OpenID(app,'tmp')) lm.login_view = 'login' db = SQLAlchemy(app) from app import views,models (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |