Ajax 无法保存Django表单
我正在尝试保存表单以更新现有用户,但无法使其正常工作。尝试保存表单时出错。控制台显示视图中发生的错误(内部服务器错误) 表格: 视图: html:Ajax 无法保存Django表单,ajax,django,Ajax,Django,我正在尝试保存表单以更新现有用户,但无法使其正常工作。尝试保存表单时出错。控制台显示视图中发生的错误(内部服务器错误) 表格: 视图: html: 解决方案: first_name = request.POST.get('first_name') user.first_name = first_name user.save() 感谢ejey解决了我的csrf ajax问题。如果您打算使用ajax发布文章,您应该使用查看方法,例如: def some_ajax_view(request):
解决方案:
first_name = request.POST.get('first_name')
user.first_name = first_name
user.save()
感谢ejey解决了我的csrf ajax问题。如果您打算使用ajax发布文章,您应该使用查看方法,例如:
def some_ajax_view(request):
data = request.POST.copy()
if request.is_ajax() and request.POST:
...
...
您可以获得更多关于如何处理ajax请求的信息,而不必在csrf上妥协。首先,您没有回答我关于错误消息的问题。这是调试过程中至关重要的一步,如果不先发现实际错误并尽自己所能解决它,那么直接进入SO并提出问题是毫无用处的 也就是说,您的代码中确实存在一个巨大的明显错误。如果请求不是帖子,和/或表单无效,您希望发生什么?目前,您的代码刚刚停止;因此,在这两种情况下,它都将返回
None
,这是一个错误:所有视图都必须返回HttpResponse
。如果您确实看到了错误消息,它可能会这么说
在这两种情况下,您应该确保视图至少返回一个空的HttpResponse。不过,更有用的是,一个实际包含表单验证错误的响应。这就是您的整个视图吗?如果设置DEBUG=True,那么错误消息会说什么?是的,目前仍然如此。我只是想弄清楚如何将表单保存到数据库中。谢谢。我一直想调查此事。首先,我感谢你的评论。但是,如果你看我的原始帖子,我给出了收到的错误,内部服务器错误。我还告诉你问题出在哪里,当它试图拯救的时候。我不关心else子句,因为如果该语句中出现错误,则该表单显然是有效的。如果我不知道问题发生在哪一行而能够确定问题,我就不会问这个问题。我建议您安装django扩展并使用/.manage.py runserve_shell命令。这样,您将在终端中获得更多描述性回溯。
<form id="updateUsername">
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-success" type="button" id="submit-username">Change</button>
</span>
<input type="text" class="form-control" id="id_firstname" placeholder="First Name: {{user.first_name}}">
<script type="text/javascript">
$('#submit-username').click(function(){
$.ajax({//begin
type: 'POST',
url: '/login/userInfoChange/',
data: $('#updateUsername').serialize(),
success: function(result){
console.log('updateUsername');
}
});
});
</script>
</div><br></form>
class UserProfile(models.Model):
user = models.OneToOneField(User)
confirmation_code = models.CharField(max_length=128)
reset_code = models.CharField(max_length=128)
address_lineOne = models.CharField(max_length=128)
address_lineTwo = models.CharField(max_length=128)
city = models.CharField(max_length=128)
State = models.CharField(max_length=128)
zipCode = models.CharField(max_length=10)
def __unicode__(self):
return self.user.username
first_name = request.POST.get('first_name')
user.first_name = first_name
user.save()
def some_ajax_view(request):
data = request.POST.copy()
if request.is_ajax() and request.POST:
...
...