python - 在 FLASK 中的表单的同一页面上显示数据
问题描述
我需要一些代码帮助,我是烧瓶的新手,我一直试图在与表单相同的页面上显示数据,这意味着我不想重定向并在不同的页面上显示数据,我已经做了几次尝试,但我失败了,请帮助我。
这是我的烧瓶代码
import os
from forms import AddForm
from flask import Flask, render_template, url_for, redirect
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
# Key for Forms
app.config['SECRET_KEY'] = 'mysecretkey'
############################################
# SQL DATABASE AND MODELS
##########################################
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
Migrate(app,db)
class Puppy(db.Model):
__tablename__ = 'puppies'
id = db.Column(db.Integer,primary_key = True)
name = db.Column(db.Text)
def __init__(self,name):
self.name = name
def __repr__(self):
return f"Puppy name: {self.name}"
############################################
# VIEWS WITH FORMS
##########################################
@app.route('/')
def index():
form = AddForm()
if form.validate_on_submit():
name = form.name.data
new_pup = Puppy(name)
db.session.add(new_pup)
db.session.commit()
return redirect(url_for('index'))
puppies = Puppy.query.all()
return render_template('testing.html',form=form, puppies=puppies)
if __name__ == '__main__':
app.run(debug=True)
HTML 代码
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>Welcome</h1>
<form method="post">
{{form.hidden_tag()}}
{{form.name.label}} {{form.name}}
{{form.submit()}}
</form>
<ul>
{% for pup in puppies %}
<li>{{pup}}</li>
{% endfor %}
</ul>
</body>
</html>
这个你能帮我吗。
解决方案
如果您根本不希望页面刷新,则需要使用 ajax 调用,否则就足够了:
@app.route('/', methods=['GET','POST'])
def index():
form = AddForm()
if form.validate_on_submit():
name = form.name.data
new_pup = Puppy(name)
db.session.add(new_pup)
db.session.commit()
puppies = Puppy.query.all()
return render_template('testing.html',form=form, puppies=puppies)
if __name__ == '__main__':
app.run(debug=True)
推荐阅读
- python - 有没有办法在熊猫数据集中用 int 表示 str ?
- lua - 如何在 lua 中访问 .txt 文件并进行读写
- react-native - 如何使用 React Navigation v. 5 中的 DrawerItemList 在抽屉导航器中传递自定义按钮?
- node.js - 如何修复“Npm ERR!JSON.parse 位置 5096 处 JSON 中的意外字符串”
- python - 返回带有字符串的函数
- javascript - 如何删除我从列表中输入的列表项?
- node.js - const x= await User.find({name:'Hello'}) , 这个常量 x 存储了什么?
- c# - Xamarin Forms 在解码自定义属性时无法加载类型 Plugin.SharedTransitions.SharedTransitionShell:(null)发生
- javascript - 如何将双引号放在数组方括号之前
- c# - 创建一个传入用户对象 json 的用户(Microsoft Graph)