当前位置: 首页 > 知识库问答 >
问题:

如何在URL Flask中显示当前用户的用户名

上官树
2023-03-14

我试图将我当前用户的用户名添加到我的URL(route)中,但是我不断地得到错误。我已经尝试了很多下面提到的方法,但是没有一个有效。以下是我的代码:

@app.route("/settings/<string:Users_username>" , methods=["GET", "POST"])
def settings(Users_username):
    user = Users.query.filter_by(username=Users_username)
    return render_template("settings.html", user=user )

Layout.html:

<a href="{{url_for('settings', Users_username = user.username )}}" target="_blank" 
rel="noopener noreferrer">Settings</a>

当我尝试转到另一个页面时,我收到错误,当我转到设置时收到404。

jinja2.exceptions.UndefinedError

jinja2.exceptions.UndefinedError:'user'未定义

MODELS.py

@login_manager.user_loader
def load_user(user_id):
   return Users.query.get(int(user_id))

class Users(db.Model, UserMixin):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String, unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

布局有问题。html或我的路线。html?这基本上是一个功能,当点击设置时,会将您带到设置页面,我希望登录用户的用户名出现在URL中。当我改变布局时。html,然后我得到

404 错误:未找到

在服务器上找不到请求的URL。如果您手动输入URL,请检查拼写并重试

我已确保用户已登录:<code>{%if current_user.is_authenticated%}

@app.route("/settings/<string:Users_username>" , methods=["GET", "POST"])
def settings(Users_username):
    user = Users.query.filter_by(username=Users_username)
    return render_template("settings.html", user=user.username )

其余相同(设置功能)。此更改出错:

attribute error:“base query”对象没有属性“username”

共有3个答案

上官联
2023-03-14

经过3天的研究和对答案的渴望,阅读了多篇文章,观看了无数视频,在layout.html随机尝试了这种方法,效果很好!!

<a href="{{ url_for('user', Users_username = current_user.username ) }}" 
target="_blank" rel="noopener noreferrer">Settings</a>

现在不需要在设置功能中进行数据库查询!

年业
2023-03-14

@reef几乎正确:在函数设置(Users_username)中替换:

user = Users.query.filter_by(username=Users_username)

user = Users.query.filter_by(username=Users_username).first()

(或者更好的first_or_404()是您正在使用Flask-Sqlalchemy)

方璞
2023-03-14

试试这个用户=用户()。query.filter_by(用户名=Users_username). first()。

你不需要在你的url中给出一个字符串作为转换类型,因为默认情况下它是字符串。看看这里

 类似资料:
  • 我已经做了很多方法来只显示Firebase数据库的用户名。但是我得到了空值。也许你可以帮助我解决这个问题。 这是我拥有的数据库。我的Firebase数据库。 然后这是显示用户名的活动显示用户名的活动 这是我创建的动画,以便您可以更轻松地理解它。动画动图 这是我的密码 第一个活动.Java LoginActivity.Java 注册活动.Java 用户.Java

  • 代码$清单- 在主页上,我想查看当前登录用户的清单,而不是所有用户的清单。我似乎找不到正确的代码。 检查表 用户表 HomeController的索引操作 存储来自ChecklistController的操作 用户模型 清单模型 主视图

  • 如何在MVC 5中获取当前登录用户的id?我尝试了StackOverflow建议,但它们似乎不适用于MVC 5 另外,MVC 5为用户分配资源的最佳实践是什么?(例如,

  • 问题内容: 我想在我的网站上实时显示所有在线用户。虽然不知道如何去做。在新用户登录后添加新用户并不难,但我还需要删除不再登录的用户。 任何想法如何做到这一点?我应该使用jQuery检查哪些用户已注销并从列表中将其删除吗? 问题答案: 您的问题将是人们在不注销的情况下离开,他们的会话将仍然存在多长时间,直到您设置了超时时间才可以收集他们的会话数据(实际上可能更长) 为了获得真正准确的登录者和访问站点

  • 当用户在我的网站上注册时,将自动创建一篇文章(在自定义文章类型下),并将用户指定为该文章的作者。这篇文章本质上是用户的“个人资料页面”。 任何用户都可以看到任何其他用户配置文件页面。但是,如果它属于登录用户,我希望在配置文件页面上显示一个按钮。 换句话说:如果登录用户是当前正在查看的帖子的作者(在前端),那么显示按钮。 下面是我最接近我需要做的事情-我创建了一个css id为的按钮,并在默认情况下

  • 喂! 我一直在做一个web项目,用户可以注册和登录。我也想添加一个配置文件,他们提供的一些信息可以在“配置文件”页面上显示。 我已经使用firebase auth(与电子邮件和密码)和rt数据库存储额外的信息,如‘姓名','生物’等。 我已经尝试过这里其他问题的解决方案,但似乎没有一个对我有效。 下面是我的数据库的外观: 下面是配置文件页面的一些代码: 当我测试代码时,我在控制台上得到了这个错误: