页面上有多个div,每个div都有一个表单。我想做一个AJAX Get,以便将输入到表单中的文本和包含表单的div的id传递到Django视图,保存到数据库中,然后显示在类似div中的文本页面底部。我写了以下代码:
HTML
<div class="jumbotron" id="post #{{post.id}}"><h3>{{post.post}}</h3>
<input type = "text" style="display:none;">{% csrf_token %}</input>
<button type="button" class="btn-primary" id='{{post.id}}'>Add post.</button>
</form>
</div>
scripts.js中
$(".btn-primary").click(function(){
var post_id = $(this).attr('id');
var post_text = $(this).parent().children("input").val();
$.get('/makepost/'),{post_id:post_id, post_text:post_text }, function(data){
newsimp_id = "#"+data;
$.scrollTo($(newsimp_id).position().top, 500);
}
});
django view
def makepost(request):
context = RequestContext(request)
parent_post_id = int(request.GET['post_id'])
post_text = request.GET['post_text']
parent_post = Post.objects.get(id=parent_post_id)
c = Post.objects.get_or_create(post = parent_post.post, parent_post = parent_post_id, post = post_text, coeficient = parent_post.coeficient + 1)[0]
new_post_id = c.id
return HttpResponse(new_post_id)
这会引发以下错误:
MultiValueDictKeyError at /makepost/
"'post_id'"
post.post表示名为post的模型中的post字段。
我该怎么办?这个错误是什么意思?还有其他选择吗?
答案 0 :(得分:0)
对不起伙计们。这是一个语法错误。我错过了$ .get函数参数的parens。正确的代码:
scripts.js中
$(".btn-primary").click(function(){
var post_id = $(this).attr('id');
var post_text = $(this).parent().children("input").val();
$.get(('/makepost/'),{post_id:post_id, post_text:post_text }, function(data){
newsimp_id = "#"+data;
$.scrollTo($(newsimp_id).position().top, 500);
});
});