Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 无法保存Django表单_Ajax_Django - Fatal编程技术网

Ajax 无法保存Django表单

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):

我正在尝试保存表单以更新现有用户,但无法使其正常工作。尝试保存表单时出错。控制台显示视图中发生的错误(内部服务器错误)

表格:

视图:

html:


解决方案:

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:
             ...
             ...