- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 forms.py 应用程序中,我有以下几行:
from flask_wtf import FlaskForm
from wtforms import SelectField, StringField, SubmitField, TextAreaField, PasswordField, BooleanField
from wtforms.validators import DataRequired
from flask_login import current_user
class LogForm(FlaskForm):
#game, title, log, submit
game = SelectField(u'Select Game', default='', coerce=str, choices=[(game.game_name, game.game_name) for game in current_user.games])
game.choices = [(game.game_name, game.game_name) for game in current_user.games]
title = StringField('Title', validators=[DataRequired()])
log = TextAreaField('Game log', validators=[DataRequired()])
submit = SubmitField('Update')
class RegisterForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
email = StringField('Email', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
remember_me = BooleanField("Remember me")
submit = SubmitField("Sign in")
当我运行代码时,出现以下错误:
>>> from app import db
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/AdityaD/iCloud Drive (Archive)/Desktop/flask_devlog/app/__init__.py", line 15, in <module>
from app import routes, models
File "/Users/AdityaD/iCloud Drive (Archive)/Desktop/flask_devlog/app/routes.py", line 7, in <module>
from app.forms import LoginForm, LogForm
File "/Users/AdityaD/iCloud Drive (Archive)/Desktop/flask_devlog/app/forms.py", line 7, in <module>
print(current_user.id)
File "/Users/AdityaD/iCloud Drive (Archive)/Desktop/flask_devlog/env/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'NoneType' object has no attribute 'id'
以下是 models.py 文件的相关部分,供引用
from app import db
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin
from app import login
@login.user_loader
def load_user(id):
return User.query.get(int(id))
class User(UserMixin, db.Model):
__tablename__ = "User"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64))
hashed_password = db.Column(db.String(128))
games = db.relationship('Game', backref='creator', lazy=True)
def set_password(self, password):
self.hashed_password = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.hashed_password, password)
def __repr__(self):
return f'<User {self.username}>'
我尝试将包含类似 if current_user is None
的 if 语句放入 LogForm 表单中,但它仍然不起作用。为什么会出现这种情况?救命!
编辑:在表单语句返回之前添加 is_authenticated 检查 AttributeError: 'NoneType' 对象没有属性 'is_authenticated'
最佳答案
要使flask_login正常工作,您需要确保您的代码具有以下方法,以便flask_login实际上可以根据给定的id登录用户
@login_manager.user_loader
def load_user(user_id):
return User.get(user_id)
此外,为了让您的表单正确生成 game.choices
字段,您需要通过登录用户来确保您拥有 current_user 对象。
为了帮助您调试,请尝试 print(current_user)
如果您得到 AnonymousUser
对象,则表示您的用户未正确登录。
关于python - Flask_login 中的 current_user 返回 NoneType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53348504/
Devise自述文件没有提及任何关于 @current_user 和 I don't see any reference to it in Devise's source code 的内容- 也不在我
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
刚开始使用我的应用程序身份验证设计开发,但是在从模型访问 current_user 时遇到了麻烦。我从 Controller 访问它没有问题。 对于我的场景,我需要获取当前用户 ID 以跟踪谁编辑了博
我在我的flask应用程序中使用flask_login扩展名登录用户。如您所知,此扩展名具有存储current_user的变量。该代码可以正常运行,除非要进行测试。 当我测试代码(使用unittest
我想用 Swift 为 OS X 应用程序定义一个变量。 但我总是收到此错误:“CURRENT_USER 的重新声明无效”。 这是我写的: var CURRENT_USER: Firebase? 我也
例如我有一个用户和一个地址,关系如下: class User < ActiveRecord::Base devise :database_authenticatable, :registerabl
我正在按照 teamtreehouse.com guide 构建我的第一个 Ruby on Rails 应用程序(ruby 2.0.0p353) . 我正在使用设计 3.2.2 devise在 app
我对 How to customize Devise to store more informations in the session? 有同样的问题 当我使用 current_user和 user
要为我的问题提供更多背景信息,请参阅此 Github 问题 - https://github.com/getsentry/raven-ruby/issues/144 我正在使用 raven这是一个错误
鉴于以下模型: Room (id, title) RoomMembers (id, room_id) RoomFeed, also an observer 当房间标题更新时,我想创建一个 RoomFe
我在 Rails 应用程序的 lib 目录中创建了一个类。该类需要访问 Devise 的 current_user。 我还应该指出,这个 lib 类经常从模型代码中访问,因此不能将 current_u
在 Flask 中,我想了解如何创建一个行为类似于 current_user 的函数,因为它在任何地方( Controller 和 View )都可用,但我很难真正知道它是什么搜索以找到答案。 我能找
我目前正在阅读 RoR 教程(http://railstutorial.org/chapters/sign-in-sign-out#sec:signin_success 是相关部分),这似乎相当不错,
我在 rails5 中使用 Active Model Serializer 0.10.7 我想知道如何在序列化程序中访问设计 current_user。 current_user 应该默认设置为范围。
如何将参数传递给我的 current_user 重定向? # SessionHelper.rb def current_user if(user_id = session[:user_id]
默认列值存在问题... 以下作品: alter table chartdata.reddit_comments add modified_datetime timestamp default now(
我使用以下命令检查 PostgreSQL 数据库中用户的组或角色, select rolname from pg_authid where pg_has_role('some_username', r
我正在使用系统测试来验证以下流程是否按用户预期的方式工作: 在表格中注册 登录 访问帐户页面 更新账户信息 但是,我在创建用户后遇到错误: Puma caught this error: Couldn
我正在使用 Flask-Login,我想通过调用 current_user.is_authenticated() 检查用户是否已登录。 我的 Flask 应用程序被组织成蓝图,其中包含一个主要的 __
我是一名优秀的程序员,十分优秀!