我正在试图找出如何将ajax数据发布到我的烧瓶控制器上,
这是我的html模板中的表单:
<form method=post action="{{ url_for( 'editreals', id=realist.index(row), name='head') }}">
在我的view.py中,获取索引'id'并投射它:
i = int(request.args.get("id")
使用ajax,我使用jquery插件(http://www.appelsiini.net/projects/jeditable)进行编辑:
<script>
$(document).ready(function() {
$(".rubric").editable('{{ url_for('editskills') }}',{
submit: 'Ok',
cancel: 'Cancel',
tooltip : 'Clic to edit',
type : 'textarea',
name : 'rubric'
});
});
</script>
<h3 class="rubric", id={{ sklist.index(row) }}>{{ row["rubric"] }}</h3>
作为回报,我得到500错误
我不明白为什么控制器总是发回那个错误:
TypeError: list indices must be integers, not NoneTypeDataType :
从网络调试器我发送的数据对我来说似乎没问题:
FormData :
rubric: datasubmitted
id: 0
那些领域只是Strings,nop?为什么python说它们是NoneTypeDataType?
[EDIT-1]
标题:
Request URL:http://<Server-IPAddress>:5000/editskills
Request Method:POST
Status Code:500 INTERNAL SERVER ERROR
Request Headersview source
Accept:text/html, */*; q=0.01
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:25
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:session=eyJsb2dnZWRfaW4iOnRydWV9.BcMSfg.j5SaVklwzSzTdttCciYL_9dqZNg
DNT:1
Host:<Server-IPAddress>:5000
Origin:http://<Server-IPAddress>:5000
Referer:http://<Server-IPAddress>:5000/competences
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36
X-Requested-With:XMLHttpRequest
Form Dataview sourceview URL encoded
rubric:1Réseaux
id:0
Response Headersview source
Connection:close
Content-Type:text/html; charset=utf-8
Date:Thu, 23 Jan 2014 20:52:19 GMT
Server:Werkzeug/0.9.4 Python/2.7.3
X-XSS-Protection:0
预览:
File "/home/noa/virtualenv/folio/foliodev/portfolio/views.py", line 39, in editskills
v = liste[i]
TypeError: list indices must be integers, not NoneType
抱歉,我犯了一个错误,有导致错误的代码:
i = request.args.get("id", type=int)
v = liste[i]
如果我尝试这样做:
i = int(request.args.get("id"))
它直接打破演员:
i = int(request.args.get("id"))
TypeError: int() argument must be a string or a number, not 'NoneType'
这让我关注为什么我发送的数据是'NoneType'
非常感谢你的时间。
答案 0 :(得分:1)
问题在于,在您的工作form
示例中,您要在查询字符串中发送id
(这使request.args
可用)。 jEditable将id
作为POST
的一部分在响应正文中发送 - Flask在request.form
下公开此数据。将i = int(request.args.get("id"))
更改为i = int(request.form.get("id"))
,事情就会奏效。