正在使用flask创建web应用程序。正在遵循此教程:https://www.youtube.com/watch?v=dam0GPOAvVI&t=5286s
我的应用程序是一个银行应用程序,与视频中不同。此时,在我的项目中,我已经看完了视频,正在尝试创建一个页面,用户可以在该页面中查看他们在数据库中存储后创建的银行帐户
使用Jinja,我尝试使用for循环来获取与特定用户关联的帐户。在视频中,他们使用了一个非常相似的for循环
{% block content %} <div class="container py-3 p-3 my-3 border">
<h3 style="text-align:Center">Your Accounts</h3>
<form name="banks">
{% for bank in account.bank_accounts %}
<label for="banks">Choose an Account</label>
<select id="banks" name="banks">
<option> value='{{ x }}'>{{x}}</option>
{% endfor %}
</select>
<div class="form-group">
<label for="Accounts">Account Number:</label>
</div>
</form></div>{% endblock %}
但是,我不断遇到错误“jinja2.exceptions.UndefinedError:‘account’未定义”
这是我的银行表和账户表的models.py
class Bank(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.column(db.String(150))
number = db.Column(db.Integer, unique=True)
ownership = db.Column(db.String(150))
type = db.Column(db.String(150))
amount = db.Column(db.Integer)
account_id = db.Column(db.Integer, db.ForeignKey('account.id'))
class Account(db.Model, UserMixin): #User object, inherit db from models.py, creating a schema
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(150), unique=True)
password = db.Column(db.String(150))
username = db.Column(db.String(150), unique=True)
bank_accounts = db.relationship('Bank')
我不知道从哪里开始坦白地说,我对制作网络应用相当陌生,在这个项目之前从未使用过flask。在我看来,帐户的定义方式与视频中设置的方式相同
如果您能帮助解决此问题,我们将不胜感激
干杯
编辑:这是my views.py,其中包含路线
@views.route('/accounts', methods=['GET', 'POST'])
@login_required
def accounts():
return render_template("accounts.html", user=current_user)
是否需要在路线中定义帐户?如果是这样的话,我已经尝试过了,但是我无法使用select()方法。它给了我以下错误:AttributeError:type对象“Bank”没有属性“select”
account = Bank.select(account_id)
看起来您的
User
帐户实际上是一个Account
对象。如果确实如此,您可以在jinja2模板中使用current_user.bank_accounts
据我所知,您已将当前使用的帐户作为“用户”传递给模板。因此,模板中的“帐户”是未知的。
使用以下代码,当前用户应该可以作为模板中的“帐户”使用
但是您也可以在模板中使用
current_user
。这是一个例外情况,通过global namespace of the jinja environment发生@noslenkwah用一个例子说明了这一点但是,您在模板中使用了另一个变量“x”,该变量也未定义。这里不能忽视你打算在那里做什么。我假设您希望使用“bank”对象的属性,但我不确定
因为已经定义了关系,所以不一定需要通过select进行查询。可以通过此查询属于“账户”的“银行”类型的对象。正如您在循环中所做的那样。select查询在后台进行。
您可以找到有关数据库关系here的文档
但是,如果您希望从数据库中查询分配给“帐户”的所有“银行”类型的对象,您可以通过以下方式执行此操作
您可以找到基本数据库查询here的说明
为了确保当前用户也有一个帐户,我建议模板使用以下代码
相关问题 更多 >
编程相关推荐