python-3.x - FLASK:即使执行已提交,在表单中输入的新值也不会插入到数据库中
问题描述
from flask import Flask, jsonify, request, url_for, redirect, session, render_template, g
import sqlite3
app = Flask(__name__)
app.config['DATABASE'] = './data.db'
def connect_db():
path = r"C:\Users\Arjun\Documents\flask_app\data.db"
sql = sqlite3.connect(path)
sql.row_factory = sqlite3.Row
return sql
def get_db():
if not hasattr(g, 'sqlite3'):
g.sqlite_db = connect_db()
return g.sqlite_db
@app.teardown_appcontext
def close_db(error):
if hasattr(g, 'sqlite_db'):
g.sqlite_db.close()
@app.route('/home', defaults={'name':'Default'})
@app.route('/home/<name>')
def home(name):
session['name'] = name
return render_template('home.html', name=name, display = False, mylist = [1,2,3,4]
@app.route('/theform5', methods=['GET', 'POST'])
def theform5():
if request.method == 'GET':
return render_template('form.html')
else:
name = request.form['name']
location = request.form['location']
db = get_db()
db.execute("insert into users (name, location) values (?, ?)", [name, location])
db.commit()
return redirect(url_for('home', name=name, location=location))
@app.route('/viewresults')
def viewresults():
db = get_db()
cur = db.execute('select id, name, location from users')
results = cur.fetchall()
return 'The ID is {}. Name is {}. The location is {}. '.format(results[1]['id'], results[1]
['name'], results[1]['location'])
错误:
return "ID 是 {}。名称是 {}。位置是 {}".format(results[1]['id'],results[1]['name'],results[1]['location' ])
IndexError:列表索引超出范围
虽然可以通过终端直接编辑表格,但在运行烧瓶 Web 应用程序时无法对其进行编辑。
- 浏览器:铬
- SQLite:v3.30.1
- 蟒蛇:v3.8.1
- 烧瓶:v1.1.1
解决方案
推荐阅读
- gdi+ - GDIPlus 中的阴影三角形
- search - 如何检查存储在用户浏览器中的cookies?
- java - libfontmanager.so 中的符号 FT_Library_SetLcdFilter 未找到错误:Openjdk JRE
- node.js - 如何在猫鼬排序中使用变量?
- uicollectionview - 我想在 Swift 的 UICollectionView 中为特定部分创建粘性标题
- php - PHP 错误:在 laravel 8 修补程序中找不到类“页面”
- unit-testing - 使用 quarkus-smallrye-graphql 进行单元测试
- huawei-mobile-services - 在华为开发者控制台上尝试在云调试中创建设备时遇到错误
- javascript - 如何单击 cypress 中的 img 元素以获取附加代码
- sql - 除法输出计算值