加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读