【发布时间】:2021-11-18 09:17:29
【问题描述】:
我正在尝试将当前用户的用户名添加到我的 URL(路由),但我不断收到错误。我已经尝试了很多如下所述的方法,但没有任何效果。这是我的代码:
@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 )
布局.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' 未定义
模型.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)
layout.html 或我的 routes.html 有问题吗?这基本上是一个功能,当单击设置时会将您带到设置页面,并且我希望登录用户的用户名出现在 URL 中。当我更改我的 layout.html 时,我会得到
404 错误:未找到
在服务器上找不到请求的 URL。如果您手动输入网址,请检查您的拼写并重试
我已确定用户已登录:{% if current_user.is_authenticated %}
我还尝试将 routes.py 更改为:
@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 )
其余相同(设置功能)。此更改给出了错误:
AttributeError: 'BaseQuery' 对象没有属性 'username'
【问题讨论】:
-
这个格式一团糟。请不要将您的文本格式化为代码。请edit这个问题让它成形
-
在设置功能中试试这个
user = Users.query.filter_by(username=Users_username).first() -
@faris404 我在尝试访问任何其他页面时仍然收到错误“用户未定义”,并且在尝试访问设置页面时出现 404 not found 错误。
-
@faris404 是不是 .username 有一些细微的错误?
标签: python flask url routes flask-sqlalchemy