我已经为我的生日提醒应用程序创建了一个编辑视图,并且以前工作过,每当我链接到此编辑视图时,我都会收到一个关键错误。我已经检查了get_Gift函数返回的对象,并且键字段存在。此外,使用多个字段创建的HTML表单包含错误中指示的字段。
收到的错误是:
werkzeug。例外情况。BadRequestKeyError:400错误请求:浏览器(或代理)发送了此服务器无法理解的请求。KeyError:“giftName”
我肯定我遗漏了一些非常明显的东西,但我目前看不到。HTML应该呈现并填充从相应MongoDB文档检索到的值。任何协助都将不胜感激。
Python脚本
def get_gift(gid):
query = {"giftId":gid}
gift = Gift.viewGift(query)
if gift is None:
abort(404, "Gift id {0} doesn't exist.".format(gid))
return gift
@ct.route('/<giftId>/editGifts', methods=('GET','POST'))
def editGifts(giftId):
gft = get_gift(giftId)
if request.method == 'POST':
giftId = giftId
giftName = request.form['giftName']
giftDate = datetime.strptime(request.form['giftDate'],'%Y-%m-%d')
giftDesc = request.form['giftDesc']
giftType = request.form['giftType']
giftCategory = request.form['giftCategory']
giftSentiment = request.form['giftSentiment']
giftRelInterest = list(str(request.form['giftRelInterest']).split(','))
error = None
gft = Gift(giftName,giftDate,giftDesc,giftType,giftCategory,giftSentiment,giftRelInterest,giftId)
if giftName is None:
error = 'Please provide a gift name'
if giftDate is None:
error = 'Please enter the date of gift purchase'
if giftType is None:
error = 'Please select a gift type'
if giftCategory is None:
error = 'Please choose a gift category'
if error is not None:
flash(error)
else:
query = {"giftId":giftId}
giftData = {"$set": {
"giftName": giftName,
"giftDate": giftDate,
"giftDesc": giftDesc,
"giftType": giftType,
"giftCategory": giftCategory,
"giftSentiment": giftSentiment,
"giftRelInterest": giftRelInterest
}}
Gift.updateGift_one(query,giftData)
return redirect(url_for('contact.index'))
gCategories = [{'name':'Books'},{'name':'Electronics/Computers'},{'name':'Home & Garden'},{'name':'Sports'},{'name':'Travel/Hospitality'},{'name':'Film/Theatre'},{'name':''},{'name':''}]
gTypes = [{'name':'Activity/Experience'},{'name':'Alcohol/Beverage'},{'name':'Virtual'},{'name':''},{'name':''},{'name':''},{'name':''},{'name':''}]
gSentiment = [{'name':'Positive'},{'name':'Neutral'},{'name':'Negative'},{'name':'Unknown'}]
gRelInt = [{'name':'Sports'},{'name':'Reading'},{'name':'Travel'},{'name':'Cooking'},{'name':'Art'},{'name':'Gardening'},{'name':'Gym'},{'name':'Film/Theatre'},{'name':'Music'},{'name':'DIY'}]
return render_template('gifts/editGifts.html', gft=gft, gCategories=gCategories, gTypes=gTypes, gSentiment=gSentiment, gRelInt=gRelInt)
else:
return render_template('gifts/viewGifts.html')
HTML表单
{% extends 'base.html' %}
{% block header %}
<div>
<h1>{% block title %}Edit Gift{% endblock %}</h1>
</div>
{% endblock %}
{% block content %}
<div class="ui form">
<fieldset>
<form method = "post">
<p>
<label for="giftName">Gift Name *</label>
<input name="giftName" id="giftName" value="{{ request.form['giftName'] or gft['giftName'] }}" required>
</p>
<p>
<label for="giftDate">Purchase Date *</label>
<input type="date" name="giftDate" id="giftDate" value="{{ request.form['giftDate'] or gft['giftDate'] }}" required>
</p>
<p>
<label for="giftDesc">Description</label>
<textarea name="giftDesc" id="giftDesc" rows="4" cols="50" value="{{ request.form['giftDesc'] or gft['giftDesc'] }}"></textarea>
</p>
<p>
<label for="giftType">Type *</label>
<select name="giftType" id="giftType" required>
{% for gTy in gTypes %}
<option selected="" value="{{ gTy.name }}">{{ gTy.name or gft['giftType'] }}</option>
{% endfor %}
</select>
</p>
<p>
<label for="giftCategory">Category *</label>
<select name="giftCategory" id="giftCategory" required>
{% for gC in gCategories %}
<option selected="Unknown" value="{{ gC.name }}">{{ gC.name or gft['giftCategory']}}</option>
{% endfor %}
</select>
</p>
<p>
<label for="giftSentiment">Sentiment</label>
<select name="giftSentiment" id="giftSentiment">
{% for gSen in gSentiment %}
<option selected="Unknown" value="{{ gSen.name }}">{{ gSen.name or gft['giftSentiment'] }}</option>
{% endfor %}
</select>
</p>
<p>
<label for="giftRelInterest">Related Interests</label>
<select name="giftRelInterest" id="giftRelInterest" size=5 multiple>
{% for gRI in gRelInt %}
<option value="{{ gRI.name }}">{{ gRI.name or gft['giftRelInterest'] }}</option>
{% endfor %}
</select>
</p>
<hr>
<p><tr>
<td><input type="submit" value="Save"></td>
<td><input type="reset" value="Reset"></td>
<td><input type="submit" value="Cancel" onclick="history.back()"></td>
</tr>
</p>
<hr>
</fieldset>
</form>
</div>
{% endblock %}
当您获得带有request.form['key']
的表单值时,如果该键不存在于request.form
中,Flask将引发一个werkzeug.exceptions.Bad刚需KeyError
异常就像你得到的一样:
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. KeyError: 'giftName'
它只是告诉您键giftName
不存在于request.form
中。就像你用dicd做的一样,你可以将所有的request.form[key]
替换为request.form.get('key')
,然后如果键不存在,你会得到无
作为默认值...
对我来说没什么可疑的。。。这个错误伴随着整个跟踪,应该指出它的确切起源。此外,如果它实际上是获取请求-查看礼物。html看起来很奇怪,因为它没有传递参数。
我已经试过填充add。html,当我单击send时,我得到上面的错误。错误的请求浏览器(或代理)发送了此服务器无法理解的请求。我的应用程序。py如下所示。 当我在填写表单后尝试提交时,会出现以下错误: 错误的请求浏览器(或代理)发送了此服务器无法理解的请求。 我已经试着把它输出到一个文件中,但仍然得到了错误
嗨,我正在编写一个博客脚本,但收到400个错误请求。Python代码: Html代码: 我以前从未收到过这样的错误,我不知道为什么。我猜表格可能有错误。 求你帮帮我
我正在尝试上传文件 错误的请求浏览器(或代理)发送了此服务器无法理解的请求。 超文本标记语言代码
我遇到了表单400错误,并尝试了其他解决方案。它让我的状态有所改善,但并没有阻止错误的发生。我有 模板/注册。html: 形式。py: 这些观点。py: 这些指纹看起来像 就像我预料的那样。我假设根据字段的验证器重新呈现页面,并显示错误消息“Passwords must match”。我该怎么做才能让此表单失败并重新提交页面?非常感谢。
我最近一直在用Java编写自己的Webserver,因为我觉得有一个很不错,昨天我偶然发现了一个问题,我仍然没有解决。我的浏览器(取消搜索Chromium)似乎向服务器发送了一些空请求或类似的东西。我实现了一个请求处理程序,它应该读取GET请求并提取请求的资源。它的工作原理是这样的:它以请求为例:“GET/index.htmlHTTP/1.1”并将其放入带有String.split (" ");
我的一个EC2实例上有一个graphql服务器正在运行。我也有AWS appsync运行,但目前它只与几个Lambda集成。 我想将我的Appsync连接到graphql服务器,这样Appsync将作为特定查询/变化的代理。 因此,从客户端来看,它将如下所示: 客户端将一个查询发送到APPESNC,让我们假设它看起来像这样: Appsync已经定义了一个查询,它被配置为在graphql服务器上代理