在 Flask 中有一个有点复杂的端点,当前部署到服务器:
@app.route('/whatever', methods=['GET', 'POST'])
def somefunct:
if request.method = 'POST':
<< do some stuff >>
<< do some other stuff >>
return render_template('sometemplate.html', **<<variable dict>>)
推送到一个模板。
sometemplate.html
有点棘手,它包含一个从变量字典中提取数据的表,还提供了一个允许用户与之交互的下拉列表:
{% for item in << variable in dict >> %}
...
<td>
<form name="category-form" id="category-form-{{ item }}" action="/whatever">
<select name="{{ item }}" id="{{ item }}">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
</form>
</td>
然后我有一些 javascript 来触发正确的POST
操作(加载了 jQuery):
$(document).ready(function() {
{% for item in << variable in dict >> %}
var form{{ item }} = $('category-form-{{ item }}');
form{{ item }}.find('#{{ item }}').change(function(){
$.ajax({
type: "POST",
url: form{{ item }}.attr('action'),
data: form{{ item }}.serialize(),
success: function(response){
console.log("calling {{item}}")
}
});
});
{% endfor %}
});
所有这些都在开发环境中正常工作,但是当我推送到我们的服务器时,我500
在 javascript 控制台中遇到错误。我的怀疑是这个request
对象发生了一些奇怪的事情——我已经能够缩小我遇到的错误,这是我在尝试解析它时没有遇到的。
作为故障排除的一部分,由于我正在运行 Apache 服务器并且无法轻松访问输出,因此我认为重做端点可能是明智的,如下所示:
@app.route('/whatever', methods=['GET', 'POST'])
if request.method = 'POST':
<< do some stuff >>
variable = << variable to test >>
return render_template('test.html', **{"variable"=variable})
<< do some other stuff >>
return render_template('sometemplate.html', **<<variable dict>>)
并将 test.html 设置为:
{{ variable }}
(周围有正确的方块等)
test.html
但是,当我尝试实现这一点时,从下拉列表中选择某些内容后,它不会重定向return
到.
我的猜测是,这与我的 javascript 的设置方式有关,但基本上我希望能够重定向到test.html
以查看请求对象的外观以及格式错误的原因。
在这种情况下,我该如何进行重定向?
当然,如果您对为什么这段代码在运行时无法在服务器上运行有任何想法localhost
,我也会全神贯注:)