python - 烧瓶 current_user 是 None 类型
问题描述
我以前工作的代码现在导致我的主烧瓶应用程序无法运行。
错误来自我的 forms.py 文件。
class selectClass(FlaskForm):
a = current_user.database
conn = sqlite3.connect("C:\\Users\\Lenovo\\PycharmProjects\\spacedonline\\"+a)
c = conn.cursor()
c.execute("SELECT Class FROM Students ")
data = c.fetchall()
listofclasses = []
for clas in data:
if clas[0] not in listofclasses:
listofclasses.append(clas[0])
finallist = []
for clas in listofclasses:
finallist.append((clas, clas))
nameofclass=SelectField(u"Name of Class", choices=finallist)
submit= SubmitField("Select")
在尝试启动 main.py 文件时,我收到以下消息:
Traceback (most recent call last):
File "C:/Users/Lenovo/PycharmProjects/spacedonline/forms.py", line 102, in <module>
class selectClass(FlaskForm):
File "C:/Users/Lenovo/PycharmProjects/spacedonline/forms.py", line 104, in selectClass
a = current_user.database
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\werkzeug\local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'NoneType' object has no attribute 'database'
正如我所说,它之前没有返回这个错误,我很茫然。
解决方案
我已经登录,当问题代码被注释掉时,我的页面显示我已登录。
我通过创建一个创建类的函数来解决这个问题:'''
def selectclassform():
class SelectClass(FlaskForm):
a = current_user.database
conn = sqlite3.connect("C:\\Users\\Lenovo\\PycharmProjects\\spacedonline\\"+a)
c = conn.cursor()
c.execute("SELECT Class FROM Students ")
data = c.fetchall()
listofclasses = []
for clas in data:
if clas[0] not in listofclasses:
listofclasses.append(clas[0])
finallist = []
for clas in listofclasses:
finallist.append((clas, clas))
nameofclass=SelectField(u"Name of Class", choices=finallist)
submit= SubmitField("Select")
return (SelectClass)
'''
然后在主apps.py文件中调用该函数:
'''
@app.route("/select", methods=["GET", "POST"])
def selectclass():
if current_user.is_authenticated:
form = selectclassform()()
print(form)
if form.validate_on_submit():
print("valid")
session ["nameofclass"]=form.nameofclass.data
#return printtable(form.nameofclass.data, current_user.database)
return redirect(url_for("validate"))
else:
print("bye")
return render_template("select.html", form=form)
else:
return redirect(url_for("login"))
'''
推荐阅读
- html - 为英雄封面的背景图像 CSS 添加不透明度
- google-maps - Ionic 3 上的链接位置
- javascript - 在 d3 节点中对齐和结构化文本
- python-3.x - 在循环完成测验/分数输入之前,如何防止打印语句运行?
- angular - 如何在编辑其中一个单元格时更新 ng2-smart-table 值?
- c# - 如何在 TextBlock 上应用多个 DoubleAnimation
- excel - Excel垂直数据到水平结构
- java - 从 JavaFX 中的非控制器类方法调用控制器类方法,组合框填充
- python - 开始菜单运行缓慢。是什么原因?
- git - Git错误:OpenSSL SSL_connect:SSL_ERROR_SYSCALL连接到