【发布时间】:2021-03-04 08:24:11
【问题描述】:
我有一个功能,当你点击按钮时,它会显示一个表单,然后它会添加一张包含提交表单数据的卡片。
routes.py:
@app.route("/user", methods=['GET', 'POST'])
@login_required
def user():
form = BudgetForm()
budgets = Budgets.query.all()
return render_template("user.html", title=current_user.username, form=form, budgets=budgets)
@app.route("/add_budgets", methods=['GET', 'POST'])
def add_budgets():
form = BudgetForm()
if form.validate_on_submit():
budget = Budgets(budget=form.budget.data)
db.session.add(budget)
db.session.commit()
return redirect(url_for('user'))
return render_template("user.html", form=form)
forms.py:
class BudgetForm(FlaskForm):
budget = IntegerField('Budget', validators=[DataRequired(), NumberRange(min=100, max=1000000)])
submit = SubmitField('Submit')
models.py:
class Budgets(db.Model):
id = db.Column(db.Integer, primary_key=True)
budget = db.Column(db.Integer, nullable=False)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
budget_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
expense = db.relationship('Expenses', backref='budget_expenses', lazy=True)
def __repr__(self):
return f"Budgets('{self.budget}')"
user.html:
<div class="dash-cards">
{% for budget in budgets %}
<div class="card-single">
<div class="card-body">
<span class="fas fa-coins"></span>
<div>
<h5>{{ budget.date_posted.strftime('%Y-%m-%d') }}</h5>
<h4>{{ budget.budget}}</h4>
</div>
</div>
<div class="card-footer">
<a href="">Add Expenses</a>
</div>
</div>
{% endfor %}
</div>
<div class="popup">
<div class="popup-content">
<form action="{{ url_for('add_budgets') }}" method="POST">
<div>
{{ form.budget.label(class="form-control-label", id="txt") }}
{{ form.budget(class="form-control") }}
</div>
<div class="form-group">
{{ form.submit(class="btn btn-outline-info" )}}
</div>
</form>
</div>
</div>
</main>
</div>
我也在命令行中查询,但没有任何显示。提交表单时没有错误。
【问题讨论】:
标签: flask sqlalchemy jinja2