类型错误:';不可变多指令集';对象不可调用(Python、Flask、Sqlite)
我是编程新手,我正在尝试使用Python中的Flask制作一个注册程序。 我使用flask作为框架,用HTML制作了一个表单。我希望表单中的信息保存在数据库中,这样我们就可以查看谁已注册。我使用SQLALchemy和SQlite进行数据库设置。当我想要提交表单以保存数据(来自webbrowser中的页面)时,我得到以下错误:“TypeError:'ImmutableMultiDict'对象不可调用” 这是我的HTML代码:类型错误:';不可变多指令集';对象不可调用(Python、Flask、Sqlite),python,forms,sqlite,flask,saving-data,Python,Forms,Sqlite,Flask,Saving Data,我是编程新手,我正在尝试使用Python中的Flask制作一个注册程序。 我使用flask作为框架,用HTML制作了一个表单。我希望表单中的信息保存在数据库中,这样我们就可以查看谁已注册。我使用SQLALchemy和SQlite进行数据库设置。当我想要提交表单以保存数据(来自webbrowser中的页面)时,我得到以下错误:“TypeError:'ImmutableMultiDict'对象不可调用” 这是我的HTML代码: {% block body %} <form action="/
{% block body %}
<form action="/", method="POST">
<div class="container">
<h1>Gasten registratie</h1>
<p>Vul dit formulier in om te registreren</p>
<hr>
<label for="First-Name"><b>Voornaam</b></label>
<input type="text" id="First-Name" placeholder="Vul hier uw voornaam in" name="Voornaam" required>
<label for="Last-Name"><b>Achternaam</b></label>
<input type="text" id="Last-Name" placeholder="Vul hier uw achternaam in" name="Achternaam" required>
<label for="Company-name"><b>Bedrijf</b></label>
<input type="text" id="Company-name" placeholder="Vul hier uw bedrijfsnaam in" name="Bedrijfsnaam" required>
<label for="Date"><b>Datum</b></label>
<input type="date" id="Date" placeholder="Selecteer de Datum" name="date" required/>
<hr>
<p>In het kader van onze ISAE certificering registreren wij uw gegevens.</p>
<p>Wij verwerken uw gegevens volgends de regels van het AVG.</p>
<button type="submit" class="registerbtn">Registreren</button>
</div>
</form>
{% endblock %}
{%block body%}
加斯滕登记处
om te注册表中的Vul dit formulier
沃纳姆
阿切特南
贝德里杰夫
资料
在这一点上,我们的认证登记处是一个非常重要的机构
这是我们的平均收入
登记员
{%endblock%}
这是我的Python代码:
from flask import Flask, render_template, url_for, request
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime'''
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///guest.db'
db = SQLAlchemy(app)
class gast(db.Model):
id = db.Column(db.Integer, primary_key=True)
voornaam = db.Column(db.String(15), nullable=False)
achternaam = db.Column(db.String(15), nullable=False)
bedrijfsnaam = db.Column(db.String(50), nullable=False)
datum = db.Column(db.Date)
date_created = db.Column(db.Date, default=datetime.utcnow)
def __repr__(self):
return '<gast %r>' % self.voornaam
@app.route('/', methods=['POST','GET'])
def index():
if request.method == 'POST':
guest_vnaam = request.form('First-Name')
guest_anaam = request.form('Last-Name')
guest_cnaam = request.form('Company-name')
guest_datum = request.form('Date')
safe_vnaam = gast(voornaam=guest_vnaam)
safe_anaam = gast(achternaam=guest_anaam)
safe_cnaam = gast(bedrijfsnaam=guest_cnaam)
safe_datum = gast(datum=guest_datum)
try:
db.session.add(safe_vnaam, safe_anaam, safe_cnaam, safe_datum)
db.session.commit()
return redirect('/')
except:
return 'Er ging iets fout met het opslaan van uw gegevens'
else:
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
从烧瓶导入烧瓶,呈现模板,url,请求
从flask_sqlalchemy导入sqlalchemy
从datetime导入datetime“”
app=烧瓶(名称)
app.config['SQLALCHEMY\u DATABASE\u URI']='sqlite:///guest.db'
db=SQLAlchemy(应用程序)
气体等级(db.型号):
id=db.Column(db.Integer,主键=True)
voornaam=db.Column(db.String(15),nullable=False)
achternaam=db.Column(db.String(15),nullable=False)
bedrijfsnaam=db.Column(db.String(50),nullable=False)
基准=分贝列(分贝日期)
创建日期=db.Column(db.date,默认值=datetime.utcnow)
定义报告(自我):
返回“”%self.voornaam
@app.route('/',方法=['POST','GET'])
def index():
如果request.method==“POST”:
guest_vnaam=request.form('First-Name')
guest\u anaam=request.form('Last-Name')
guest_cnaam=请求表('公司名称')
guest_datum=请求表(“日期”)
保险箱=gast(voornaam=客人)
安全=加斯特(阿克特纳姆=客人)
安全=加斯特(bedrijfsnaam=客人)
安全基准=气体(基准=客人基准)
尝试:
db.session.add(safe_vnaam、safe_anaam、safe_cnaam、safe_datum)
db.session.commit()
返回重定向(“/”)
除:
返回“我们遇到了他”
其他:
返回渲染模板('index.html')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
谁能帮我弄清楚我做错了什么或忘记了什么?
提前感谢正如错误所说,
请求。表单
是一种(类型的)dict。您不使用paren调用dict,而是使用方括号访问它们的元素。您所有的请求。表单(…)
行应该是请求。表单[…]
。嗨,丹尼尔,谢谢您的快速回复。我将request.form(…)替换为request.form[…]。但现在我得到了一个不同的错误。错误为:werkzeug.exceptions.BadRequestKeyError:400错误请求:浏览器(或代理)发送了此服务器无法理解的请求。KeyError:“First-Name”嗯,您的HTML字段的名称有Voornaam
和Achternaam
,而不是First-Name
和Last-Name
等。嗨,丹尼尔,谢谢您的帮助!成功了。我想我必须从表格中的每个字段中选择ID