2016-12-31 111 views
1

我想用ajax代码更新我的数据库的内容使用引导模态窗体。但我的数据库不会更新与窗体中提供的输入。表单工作得很好,但我没有看到数据库中更新的内容。哪里不对 ???为什么下面的代码没有更新数据库?

<div class="container"> 
    <h1> {{ username }} </h1> 
    <h2>Modal Example</h2> 
    <!-- Trigger the modal with a button --> 
    <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button> 
    <!-- Modal --> 
    <div class="modal fade" id="myModal" role="dialog"> 
    <div class="modal-dialog"> 
    <form id="new_user_form"> 
     {% csrf_token %} 
     <!-- Modal content--> 
     <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal">&times;</button> 
      <h4 class="modal-title">Modal Header</h4> 
     </div> 
     <div class="modal-body"> 
      <div class="form-group" > 
       <label for="usr">Username:</label> 
       <input type="text" name="username" class="form-control input-lg" id="username"> 
       <label for="passwordd">Password:</label> 
       <input type="password" name="password" class="form-control input-sm" id="password"> 
      </div> 
     </div> 
     <div class="modal-footer"> 
      <button type="submit" class="btn btn-default" id="submit">Submit</button> 
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
     </div> 
     </div> 

    </div> 
    </div> 
    </form> 
    <script type="text/javascript" src="/static/bootstrap 3/js/bootstrap.min.js"></script> 

Ajax代码:

<script> 
$(document).on('submit','#new_user_form',function(e){ 
    e.preventDefault(); 
    $.ajax({ 
      type: "POST", 
      url: "/testapp/registered/", 
      data: { 
        username: $('#username').val(), 
        password: $('#password').val(), 
        csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val() 
      }, 
      sucess: function(){ 
       alert("Registeration successfully.") 
      } 
      error: function(jqXHR, textStatus, errorThrown) 
      { 
       alert(textStatus, errorThrown); 
      } 
    }); 
}); 


</script> 

views.py:

from django.shortcuts import render 
from testapp.models import User 

def index(request): 
    template = 'index.html' 
    return render(request,template) 

def create_user(request): 
    if request.method == 'POST': 
     User.objects.create(
      username = request.POST['username'], 
      password = request.POST['password'], 
     ) 
     User.save() 
    return render(request,'testapp/index.html',{'username':request.POST['username']}) 
请我搜索整个互联网,并没有什么:(

的html代码帮助

testapp \ urls.py:

from django.conf.urls import url 
from .import views 

urlpatterns = [ 
    url(r'^$', views.index, name="Index"), 
    url(r'^registered/$', views.create_user, name="registered"), 
] 
+0

你在'create_user'视图中测试过使用ipdb进行调试吗?如果你调用'request.POST',你会得到什么? –

+0

什么是ipdb?以及我创建了我的主要项目的副本,并猜测该副本更新数据库,但主项目仍然没有更新数据库,我做了两个项目的检查,我得到500内部服务器错误这里是图像的错误:https://postimg.org/image/tim44b9nl/ – Ahtisham

+0

最有可能'User.save()'导致错误。因为'User'类没有保存属性。只要摆脱那条线。 'create'已经为你保存对象 – karthikr

回答

-1
在testapp \ urls.py

:交换链接路由逻辑

from django.conf.urls import url 
from .import views 

urlpatterns = [ 
    url(r'^registered/$', views.create_user, name="registered"), 
    url(r'^$', views.index, name="Index") 
] 
+0

仍然不工作:( – Ahtisham

0

只有做到这一点: my_user = User.objects.create(用户名= request.POST ['username'],password = request.POST ['password']) my_user.save() 您需要保存已创建的模型实例,而不仅仅是调用模型的.save()函数。

相关问题