【发布时间】:2016-07-19 17:15:39
【问题描述】:
朋友们,我正在尝试在 django 中使用 ajax 处理表单提交。我一直收到这个错误,上面写着,
The view auths.change_profile.change_username didn't return an HttpResponse object. It returned None instead.
这是我的 change_profile.py
def change_username(request):
if request.is_ajax() and request.method == 'GET':
return render(request,"auths/edits/edit_username.html",{})
elif request.method == 'POST' and request.is_ajax():
username = request.POST['username']
user = User.objects.get(username=request.user.username)
user.username = username
user.save()
if user.save():
data = "Username successfully updated"
else:
data = "Something went wrong!"
return HttpResponse(json.dumps({'data':data}), content_type="application/json")
而我的ajax.js如下
$(document).ready(
$('#username_form').submit(function(){
$.ajax({
type:"POST",
url:'/change_username/',
data:{
'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()
},
success:function(data){
$('#username').html(data);
}
});
});
);
我哪里出错了?
【问题讨论】:
-
我认为您需要更改原始
if语句的顺序。从技术上讲,请求是 ajax,所以它会返回第一个 if 语句。它不会执行第二个。无论如何,这是我的信念。尝试在其中添加print语句进行检查。 -
我添加了对 GET 请求的检查,但我仍然收到相同的错误。虽然 GET 在 ajax 上运行良好,但 POST 存在这个问题
-
你使用的是什么版本的 Django?