tengke 发表于 2024-1-17 17:58:29

提交保存 没有进行数据保存问题

<input uid="{{ s.id }}" type="button" class="btn btn-primary btn-xs btn-edit1" value="编辑" >
<!-- 编辑数据模态框 -->
      <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="viewTitle" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="viewTitle">编辑数据</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                {% for f in form %}
      <div class="form-group">
            {{ f.label }} : {{ f }}
      <span class="error-msg" style="color:red; postition:absolute;"></span>
      </div>
    {% endfor %}
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button>
                <button id="eitd" type="button" class="btn btn-primary">保存</button>
            </div>
      </div>
    </div>
</div>

    {% endfor %}
   </table>
    <script>
            var DELETE_ID;
         $(function () {
      console.log("aja2 function called");
                      bb();
                delete1();
    })
      function bb() {
            $(".btn-edit1").click(function() {
                var uid =$(this).attr("uid")
                $.ajax({
                  url: "/ajaview",
                  type: "get",
                  data :{
                        uid: uid
                  },
                  dataType: "JSON",
                  success:function (res){
                        if(res.status){
                            $.each(res.data,function (name,value){
                              $("#id_" + name).val(value);
                            })
$('#myModal').modal('show');
    console.log(res);
                        }else{
                            alert(res.error);
                        }

                  }
                })
            });
      }
$(function et() {
$("#eitd").click(function() {
    $.ajax({
      url: "/ajeit",
      type: "POST",
      data: $("#btn-edit1").serialize() + "&uid=" + DELETE_ID,
      dataType: "JSON",
      success: function (res) {
      if (res.status) {
          console.log("保存成功");
          // 关闭模态框
          $('#myModal').modal('hide');
      } else {
          console.log("保存失败");
      }
      },
      error: function (xhr, textStatus, errorThrown) {
      console.log("请求错误:" + errorThrown);
      }
    });
});
});




py文件
def ajeit(request):
    uid = request.GET.get("uid")
    row= models.aj.objects.filter(id=uid).first()
    if not row:
         return JsonResponse({"status": False, "error": "not11"})
    form = ajajeit(data=request.POST, instance=row)
    if form.is_valid():
      form.save()
      return JsonResponse({"status":True})
    return JsonResponse({"status": False, "error": form.error})

url路径
    path('aj/', views.aj),
    path('ajadd/', views.ajadd),
    path('ajxs/', views.ajxs),
    path('ajdelete', views.ajdelete),
    path('ajaview', views.ajaview),
    path('ajeit', views.ajeit),
麻烦大佬看看 我这个 点击保存 后台数据没有进行保存的问题并且控制台提示请求错误:Forbidden

FishC 发表于 2024-1-17 17:58:30

首先,根据您提供的信息,出现403错误(Forbidden)可能是由于权限不足导致的。检查一下您的请求是否需要进行身份验证或者是否有足够的权限来进行保存操作。

其次,根据您提供的代码,点击保存按钮后会触发Ajax请求,将表单数据和uid一起发送到后台进行保存。在py文件中,您使用了`request.GET.get("uid")`来获取uid参数,但是在前端的AJAX请求中,您是通过POST方式发送参数的。因此,您应该使用`request.POST.get("uid")`来获取uid参数。

修正过后的代码如下所示:

$(function et() {
$("#eitd").click(function() {
    $.ajax({
      url: "/ajeit",
      type: "POST",
      data: $("#btn-edit1").serialize() + "&uid=" + DELETE_ID,
      dataType: "JSON",
      success: function (res) {
      if (res.status) {
          console.log("保存成功");
          // 关闭模态框
          $('#myModal').modal('hide');
      } else {
          console.log("保存失败");
      }
      },
      error: function (xhr, textStatus, errorThrown) {
      console.log("请求错误:" + errorThrown);
      }
    });
});
});

def ajeit(request):
    uid = request.POST.get("uid")
    row= models.aj.objects.filter(id=uid).first()
    if not row:
         return JsonResponse({"status": False, "error": "not11"})
    form = ajajeit(data=request.POST, instance=row)
    if form.is_valid():
      form.save()
      return JsonResponse({"status":True})
    return JsonResponse({"status": False, "error": form.errors})

另外,检查一下您的保存逻辑是否正确。首先,确保您的`ajajeit`表单验证通过,可以通过`form.is_valid()`来判断。然后,在保存之前,可以打印一下表单的数据,确保数据正常传递到后台。

最后,确保您的请求路径和请求方法都是正确的。您可以在浏览器的开发者工具中查看请求的详细信息,包括请求的URL、请求方法以及请求的参数等。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

tengke 发表于 2024-1-17 18:04:19

@isdkz

FishC 发表于 2024-1-17 18:05:55

tengke 发表于 2024-01-17 18:04
@isdkz

嗨,有什么问题我可以帮您解答吗?

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

tengke 发表于 2024-1-17 18:12:26

{% load static %}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>eCommerce template By Adobe Dreamweaver</title>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
{#    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">#}
    <link rel="stylesheet" href="{% static 'css/eCommerceStyle.css' %}">
{#    <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>#}

    <script src="{% static 'js/jquery.min.js' %}"></script>
    <script src="{% static 'js/bootstrap.js' %}"></script>

    <script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
{#   <script src="{% static 'js/bootstrap.bundle.min.js' %}"></script>#}
      <script src="{% static 'js/bootstrap.min.js' %}"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
<div id="mainWrapper">
<header>
    <!-- This is the header content. It contains Logo and links -->
<!-- <img src="logoImage.png" alt="sample logo"> -->
      <!-- Company Logo text -->
{#                <div id="headerLinks"><a href="#" title="Login/Register">登陆/退出</a></div>#}

      <div class="dropdown" style="position: absolute; top: 10px; right: 10px;">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
      {{ request.session.info.name }}
    <span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#">设置</a></li>
    <li><a href="http://127.0.0.1:8000/zx/" title="Link">退出</a></li>
</ul>
</div>
</header>
<div id="content">
    <section class="sidebar">
      <!-- This adds a sidebar with 1 searchbox,2 menusets, each with 4 links -->
      <div id="menubar">
      <nav class="menu">
<ul>
            <!-- List of links under menuset 1 -->
            <li>
            <a href="#" title="Link">首页</a></li>
            <li><a href="#" title="Link">监控网站</a></li>
            <li><a href="#" title="Link">博客网站</a></li>
                      <li><a href="#" title="Link">容器网站</a></li>
                        <li><a href="http://127.0.0.1:8000/rootuseradd/" title="Link">测试python界面</a></li>
            <li class="notimp"><!-- notimp class is applied to remove this link from the tablet and phone views --><a href="#"title="Link">&nbsp;</a></li>
          </ul>
      </nav>
      <nav class="menu">
          <h2>设置 </h2>
          <!-- Title for menuset 2 -->
          <hr>
          <ul>
            <!--List of links under menuset 2 -->
            <li><a href="#" title="Link">设置&nbsp;</a></li>
            <li class="notimp"><!-- notimp class is applied to remove this link from the tablet and phone views --><a href="#" title="Link">退出</a></li>
          </ul>
      </nav>
      </div>
    </section>
    <section class="mainContent">
      <div class="productRow"><!-- Each product row contains info of 3 elements -->
             <style>
      .panel {
            border: none;
      }
      .table {
            text-align: center;
            margin-left: auto;
            margin-right: auto;
      }
    </style>

<body>
    <div class="bs-example" data-example-id="panel-without-body-with-table">
      <div class="panel panel-default">
            <table class="table">
                <tr>
                  <th scope="row"></th>
                  <td><a href="http://127.0.0.1:8000/useradd/" title="Link">用户添加</a></td>
                  <td><a href="http://127.0.0.1:8000/view/" title="Link">用户查看</a></td>
                     <td><a href="http://127.0.0.1:8000/user_add/" title="Link">部门添加</a></td>
                     <td><a href="http://127.0.0.1:8000/user_add/" title="Link">部门查看</a></td>
                </tr>
            </table>
      </div>
    </div>
</body>



         <div class="bs-example" data-example-id="panel-without-body-with-table">
    <div class="panel panel-default">
      <!-- Default panel contents -->
      <div class="panel-heading">用户信息
          <form method="get">
          </form>
    <div class="input-group">
      <input type="text" name="q" class="form-control" placeholder="Search for...">
      </form>
      <span class="input-group-btn">
      <button class="btn btn-default" type="submit"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button>
      </span>
    </div><!-- /input-group -->
</div><!-- /.col-lg-6 -->
</div><!-- /.row -->
      <!-- Table -->
<table class="table">
          <tr>
    {% for s in deat %}
      <td align="left">{{ s.id }}</td>
          <td align="left">{{ s.get_j_display }}</td>
          <td align="left">{{ s.bt }}</td>
         <td align="left">{{ s.detail }}</td>
         <td align="left">{{ s.user }}</td>
               <td>
          <input uid="{{ s.id }}" type="button" class="btn btn-primary btn-xs btn-edit1" value="编辑" >
               <input uid="{{ s.id }}" class="btn btn-danger btn-xs btn-delete" type="button" value="删除">
         </td>

      <!-- 删除数据模态框 -->
<div class="modal fade" id="deleteuid" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span></button>
{#      <h4 class="modal-title" id="myModalLabel">删除</h4>#}
      </div>
      <div class="modal-body">
          确认要删除吗?
      </div>
      <div class="modal-footer">
         <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
          <buttonid="date2" type="submit" class="btn btn-primary">提交</button>
      </div>
    </div>
</div>
</div>

<!-- 编辑数据模态框 -->
      <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="viewTitle" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="viewTitle">编辑数据</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                {% for f in form %}
      <div class="form-group">
            {{ f.label }} : {{ f }}
      <span class="error-msg" style="color:red; postition:absolute;"></span>
      </div>
    {% endfor %}
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button>
                <button id="eitd" type="button" class="btn btn-primary">保存</button>
            </div>
      </div>
    </div>
</div>
      </tr>

    {% endfor %}
   </table>
    <script>
            var DELETE_ID;
         $(function () {
      console.log("aja2 function called");
                      bb();
                delete1();
    })
      function bb() {
            $(".btn-edit1").click(function() {
                var uid =$(this).attr("uid")
                $.ajax({
                  url: "/ajaview",
                  type: "get",
                  data :{
                        uid: uid
                  },
                  dataType: "JSON",
                  success:function (res){
                        if(res.status){
                            $.each(res.data,function (name,value){
                              $("#id_" + name).val(value);
                            })
$('#myModal').modal('show');
    console.log(res);
                        }else{
                            alert(res.error);
                        }

                  }
                })
            });
      }


    $(function et() {
$("#eitd").click(function() {
    $.ajax({
      url: "/ajeit",
      type: "POST",
      data: $("#btn-edit1").serialize() + "&uid=" + DELETE_ID,
      dataType: "JSON",
      success: function (res) {
      if (res.status) {
          console.log("保存成功");
          // 关闭模态框
          $('#myModal').modal('hide');
      } else {
          console.log("保存失败");
      }
      },
      error: function (xhr, textStatus, errorThrown) {
      console.log("请求错误:" + errorThrown);
      }
    });
});
});


function delete1() {
      $(".btn-delete").click(function() {
            $('#deleteuid').modal('show');
            DELETE_ID=$(this).attr("uid");
            var uid=$(this).attr("uid");
            console.log(uid);
      });
    }
$(function () {
    $("#date2").click(function() {
         console.log("date2");
      $.ajax({
            url: "/ajdelete",
            type: "GET",
            data: {
                uid: DELETE_ID
            },
            dataType: "JSON",
            success: function (res) {
                if (res.status) {
                  location.reload(); // 刷新界面的js代码
                } else {
                  alert(res.error);
                }
            }
      });
    });
});

    </script>
</body>


<ul class="pagination">
      {{ymm}}</ul>
          </tr>
      </tbody>
      </table>
    </div>
</div>

      </article>
      </div>
      {%block b %}{% endblock %}

    </section>
</div>
<footer>
    <!-- This is the footer with default 3 divs -->
    <div>
      <p>没有数据</p>
    </div>
    <div>
      <p>没有数据</p>
    </div>
    <div class="footerlinks">
      <p><a href="#" title="Link">Link 1 </a></p>
      <p><a href="#" title="Link">Link 2</a></p>
      <p><a href="#" title="Link">Link 3</a></p>
    </div>
</footer>
</div>
</body>
</html>




urls 文件路径
    path('aj/', views.aj),
    path('ajadd/', views.ajadd),
    path('ajxs/', views.ajxs),
    path('ajdelete', views.ajdelete),
    path('ajaview', views.ajaview),
    path('ajeit', views.ajeit),





view文件
def aj(request):
    form = Aj()
    return render(request, "aj.html",{"form":form})

import json
from django.http import HttpResponse
from django.forms.utils import ErrorDict
# @csrf_exempt
def ajadd(request):
    form = Aj(data=request.POST)
    if form.is_valid():
      form.instance.user_id = request.session['info']['id']
      form.save()
      data = {"status": True}
      return HttpResponse(json.dumps(data), content_type="application/json")
    data = {"status": False,'error':form.errors}
    return HttpResponse(json.dumps(data,ensure_ascii=False), content_type="application/json")


def ajxs(request):
    from app.fenye import Cs
    form = Aj()
    n = request.GET.get('q', "")
    ss = models.aj.objects.filter(
      Q(id__icontains=n)
    )
    css = Cs(request, ss, n)
    cz = {"deat": css.ssxs, "ymm": css.html,"form":form}
    return render(request, "ajxs.html",cz)
def ajdelete(request):
    uid=request.GET.get('uid')
    exists=models.aj.objects.filter(id=uid).exists()
    if not exists:
      return JsonResponse({"status":False,"error":"not"})
    models.aj.objects.filter(id=uid).delete()
    return JsonResponse({"status":True})

def ajaview(request):
    uid = request.GET.get("uid")
    row = models.aj.objects.filter(id=uid).values("j","bt","detail").first()
    result = {"status" :True,"data":row}
    if not row:
      return JsonResponse({"status": False, "error": "not11"})
    return JsonResponse(result)

def root(request):
    from app.fenye import Cs
    form = Aj()
    n = request.GET.get('q', "")
    ss = models.aj.objects.filter(
      Q(id__icontains=n)
    )
    css = Cs(request, ss, n)
    cz = {"deat": css.ssxs, "ymm": css.html,"form":form}
    return render(request, "cs.html",cz)

class ajajeit(forms.ModelForm):
    # daa = forms.CharField(disabled=True,label="age")
    # name = forms.CharField(min_length=3,label="用户名")
    class Meta:
      model = models.aj
      fields = [ "j","bt","detail"]

def ajeit(request):
    uid = request.GET.get("uid")
    row= models.aj.objects.filter(id=uid).first()
    if not row:
         return JsonResponse({"status": False, "error": "not11"})
    form = ajajeit(data=request.POST, instance=row)
    if form.is_valid():
      form.save()
      return JsonResponse({"status":True})
    return JsonResponse({"status": False, "error": form.error})

FishC 发表于 2024-1-17 18:13:18

tengke 发表于 2024-01-17 18:12
{% load static %}




eCommerce template By A ...

根据您提供的代码,有几个问题需要解决:

1. 没有进行数据保存:在`ajadd`和`ajeit`函数中,您应该在form保存之前验证表单是否有效。对于无效的表单,您可以返回相应的错误信息。此外,在`ajadd`函数中,您设置了`form.instance.user_id = request.session`,但是似乎没有为`request.session`分配一个具体的值。

2. 请求错误:Forbidden(禁止访问):这可能是因为您的AJAX请求被服务器拒绝。请确保您的URL路径和请求方法(GET或POST)与后台视图函数中定义的路由匹配,并且正确处理了CSRF令牌,将请求标记为`@csrf_exempt`以解决此问题。

3. 代码缺失:在表单类`ajajeit`的Meta类中,`fields`属性的值似乎没有提供完整。请确认该值是包含所有要保存的字段的列表。

综上所述,以下是修正过的代码示例:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def ajadd(request):
    form = Aj(data=request.POST)
    if form.is_valid():
      form.instance.user_id = request.session.get("user_id")# 在session中找到对应的用户ID字段
      form.save()
      data = {"status": True}
      return HttpResponse(json.dumps(data), content_type="application/json")
    data = {"status": False, 'error': form.errors}
    return HttpResponse(json.dumps(data, ensure_ascii=False), content_type="application/json")

@csrf_exempt
def ajeit(request):
    uid = request.POST.get("uid")
    row = models.aj.objects.filter(id=uid).first()
    if not row:
      return JsonResponse({"status": False, "error": "not11"})
    form = ajajeit(data=request.POST, instance=row)
    if form.is_valid():
      form.save()
      return JsonResponse({"status": True})
    return JsonResponse({"status": False, "error": form.errors})

class ajajeit(forms.ModelForm):
    class Meta:
      model = models.aj
      fields = "__all__"

请注意,上述代码仅为参考,您可能还需要根据您的实际需求对其进行调整。如果问题仍然存在,请提供更多详细信息以帮助我们更好地理解您的问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

tengke 发表于 2024-1-25 11:21:14

{% load static %}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>eCommerce template By Adobe Dreamweaver</title>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
{#    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">#}
    <link rel="stylesheet" href="{% static 'css/eCommerceStyle.css' %}">
{#    <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>#}

    <script src="{% static 'js/jquery.min.js' %}"></script>
    <script src="{% static 'js/bootstrap.js' %}"></script>

    <script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
{#   <script src="{% static 'js/bootstrap.bundle.min.js' %}"></script>#}
      <script src="{% static 'js/bootstrap.min.js' %}"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
<div id="mainWrapper">
<header>
    <!-- This is the header content. It contains Logo and links -->
<!-- <img src="logoImage.png" alt="sample logo"> -->
      <!-- Company Logo text -->
{#                <div id="headerLinks"><a href="#" title="Login/Register">登陆/退出</a></div>#}

      <div class="dropdown" style="position: absolute; top: 10px; right: 10px;">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
      {{ request.session.info.name }}
    <span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#">设置</a></li>
    <li><a href="http://127.0.0.1:8000/zx/" title="Link">退出</a></li>
</ul>
</div>
</header>
<div id="content">
    <section class="sidebar">
      <!-- This adds a sidebar with 1 searchbox,2 menusets, each with 4 links -->
      <div id="menubar">
      <nav class="menu">
<ul>
            <!-- List of links under menuset 1 -->
            <li>
            <a href="#" title="Link">首页</a></li>
            <li><a href="#" title="Link">监控网站</a></li>
            <li><a href="#" title="Link">博客网站</a></li>
                      <li><a href="#" title="Link">容器网站</a></li>
                        <li><a href="http://127.0.0.1:8000/rootuseradd/" title="Link">测试python界面</a></li>
            <li class="notimp"><!-- notimp class is applied to remove this link from the tablet and phone views --><a href="#"title="Link">&nbsp;</a></li>
          </ul>
      </nav>
      <nav class="menu">
          <h2>设置 </h2>
          <!-- Title for menuset 2 -->
          <hr>
          <ul>
            <!--List of links under menuset 2 -->
            <li><a href="#" title="Link">设置&nbsp;</a></li>
            <li class="notimp"><!-- notimp class is applied to remove this link from the tablet and phone views --><a href="#" title="Link">退出</a></li>
          </ul>
      </nav>
      </div>
    </section>
    <section class="mainContent">
      <div class="productRow"><!-- Each product row contains info of 3 elements -->
             <style>
      .panel {
            border: none;
      }
      .table {
            text-align: center;
            margin-left: auto;
            margin-right: auto;
      }
    </style>

<body>
    <div class="bs-example" data-example-id="panel-without-body-with-table">
      <div class="panel panel-default">
            <table class="table">
                <tr>
                  <th scope="row"></th>
                  <td><a href="http://127.0.0.1:8000/useradd/" title="Link">用户添加</a></td>
                  <td><a href="http://127.0.0.1:8000/view/" title="Link">用户查看</a></td>
                     <td><a href="http://127.0.0.1:8000/user_add/" title="Link">部门添加</a></td>
                     <td><a href="http://127.0.0.1:8000/user_add/" title="Link">部门查看</a></td>
                </tr>
            </table>
      </div>
    </div>
</body>
         <div class="bs-example" data-example-id="panel-without-body-with-table">
    <div class="panel panel-default">
      <!-- Default panel contents -->
      <div class="panel-heading">用户信息
          <form method="get">
          </form>
    <div class="input-group">
      <input type="text" name="q" class="form-control" placeholder="Search for...">
      </form>
      <span class="input-group-btn">
      <button class="btn btn-default" type="submit"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button>
      </span>
    </div><!-- /input-group -->
</div><!-- /.col-lg-6 -->
</div><!-- /.row -->
      <!-- Table -->
<table class="table">
          <tr>
    {% for s in deat %}
      <td align="left">{{ s.id }}</td>
          <td align="left">{{ s.get_j_display }}</td>
          <td align="left">{{ s.bt }}</td>
         <td align="left">{{ s.detail }}</td>
         <td align="left">{{ s.user }}</td>
               <td>
          <input uid="{{ s.id }}" type="button" class="btn btn-primary btn-xs btn-edit1" value="编辑" >
               <input uid="{{ s.id }}" class="btn btn-danger btn-xs btn-delete" type="button" value="删除">
         </td>
      <!-- 删除数据模态框 -->
<div class="modal fade" id="deleteuid" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span></button>
{#      <h4 class="modal-title" id="myModalLabel">删除</h4>#}
      </div>
      <div class="modal-body">
          确认要删除吗?
      </div>
      <div class="modal-footer">
         <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
          <buttonid="date2" type="submit" class="btn btn-primary">提交</button>
      </div>
    </div>
</div>
</div>
<!-- 编辑数据模态框 -->
      <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="viewTitle" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="viewTitle">编辑数据</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
<form id="btn412"novalidate>
            <div class="modal-body">
                {% for f in form %}
      <div class="form-group">
            {{ f.label }} : {{ f }}
      <span class="error-msg" style="color:red; postition:absolute;"></span>
      </div>
    {% endfor %}
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button>
                <buttonuid="{{ s.id }}" id="eitd" type="submit" class="btn btn-primary">保存</button>
            </div>
      </div>
    </div>
</div>
      </tr>
    {% endfor %}
   </table>
    <script>
            var csrfToken = "{{ csrf_token }}";
            var DELETE_ID;
            {#var uid = "DELETE_ID";#}
         $(function () {
      console.log("aja2 function called");
                      bb();
                delete1();
    })
      function bb() {
            $(".btn-edit1").click(function() {
                var uid =$(this).attr("uid")
                $.ajax({
                  url: "/ajaview",
                  type: "get",
                  data :{
                        uid: uid
                  },
                  dataType: "JSON",
                  success:function (res){
                        if(res.status){
                            $.each(res.data,function (name,value){
                              $("#id_" + name).val(value);
                            })
$('#myModal').modal('show');
    console.log(res);
                        }else{
                            alert(res.error);
                        }

                  }
                })
            });
      }
$(function et() {
$("#eitd").click(function() {
   var DELETE_ID =$(this).attr("uid")
            event.preventDefault();
            $(".error-msg").text("");
    $.ajax({
      url: "/ajeit"+"?uid=" + DELETE_ID,
      type: "POST",
      headers: {
      "X-CSRFToken": csrfToken// 将CSRF令牌添加到请求头部
      },
            {#data: $("#entd").serialize(),#}
      data: $("#btn412").serialize(),
      dataType: "JSON",
      success: function (res) {
      if (res.status) {
          console.log("保存成功");
          // 关闭模态框
          $('#myModal').modal('hide');
      } else {
          console.log("保存失败");
      }
      },
      error: function (xhr, textStatus, errorThrown) {
      console.log("请求错误:" + errorThrown);
      }
    });
});
});


    {#$("#eitd").click(function() {#}
    {#   console.log("guanb");#}
    {#});#}




function delete1() {
      $(".btn-delete").click(function() {
            $('#deleteuid').modal('show');
            DELETE_ID=$(this).attr("uid");
            var uid=$(this).attr("uid");
            console.log(uid);
      });
    }
$(function () {
    $("#date2").click(function() {
         console.log("date2");
      $.ajax({
            url: "/ajdelete",
            type: "GET",
            data: {
                uid: DELETE_ID
            },
            dataType: "JSON",
            success: function (res) {
                if (res.status) {
                  location.reload(); // 刷新界面的js代码
                } else {
                  alert(res.error);
                }
            }
      });
    });
});

    </script>
</body>


<ul class="pagination">
      {{ymm}}</ul>
          </tr>
      </tbody>
      </table>
    </div>
</div>

      </article>
      </div>
      {%block b %}{% endblock %}

    </section>
</div>
<footer>
    <!-- This is the footer with default 3 divs -->
    <div>
      <p>没有数据</p>
    </div>
    <div>
      <p>没有数据</p>
    </div>
    <div class="footerlinks">
      <p><a href="#" title="Link">Link 1 </a></p>
      <p><a href="#" title="Link">Link 2</a></p>
      <p><a href="#" title="Link">Link 3</a></p>
    </div>
</footer>
</div>
</body>
</html>
前台可以正常弹窗数据 但是 在前台修改后数据 打印传输的内容还是原来的内容   没有进行改变

FishC 发表于 2024-1-25 11:22:20

tengke 发表于 2024-01-25 11:21
{% load static %}




eCommerce template By A ...

根据您提供的代码,问题可能出在您的AJAX请求中。我注意到在编辑数据时,您使用`$("#btn412").serialize()`来序列化表单数据并发送到后台。但是,您的保存按钮有一个id为`eitd`,而不是`btn412`。因此,您需要将`$("#btn412")`更改为`$("#eitd")`,以便正确地获取表单数据。修正过后的代码如下所示:

$(function et() {
$("#eitd").click(function(event) {
    var DELETE_ID = $(this).attr("uid");
    event.preventDefault();
    $(".error-msg").text("");
    $.ajax({
      url: "/ajeit" + "?uid=" + DELETE_ID,
      type: "POST",
      headers: {
      "X-CSRFToken": csrfToken// 将CSRF令牌添加到请求头部
      },
      data: $("#eitd").serialize(),
      dataType: "JSON",
      success: function (res) {
      if (res.status) {
          console.log("保存成功");
          // 关闭模态框
          $('#myModal').modal('hide');
      } else {
          console.log("保存失败");
      }
      },
      error: function (xhr, textStatus, errorThrown) {
      console.log("请求错误:" + errorThrown);
      }
    });
});
});

请确保您的表单字段和后台视图函数中的字段名称相匹配。此外,还要确保您在前端正确地获取了编辑数据的唯一标识符(DELETE_ID),并将其作为请求参数发送到后台进行数据更新。如果问题仍然存在,请提供更多详细信息,以便我们更好地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

tengke 发表于 2024-1-25 11:27:18

class ajajeit(forms.ModelForm):
    # daa = forms.CharField(disabled=True,label="age")
    # name = forms.CharField(min_length=3,label="用户名")
    class Meta:
      model = models.aj
      fields = [ "j","bt","detail"]

def ajeit(request):
    uid = request.GET.get("uid")
    print(uid)
    row = models.aj.objects.filter(id=uid).first()
    print(row.j,row.bt,row.detail,row.id)
    if not row:
         return JsonResponse({"status": False, "error": "not11"})
    form = ajajeit(data=request.POST, instance=row)
    # form = ajajeit(instance=row)
    if form.is_valid():
      form.save()
      return JsonResponse({"status":True})
    return JsonResponse({"status": False, "error": form.errors})
   


    path('ajeit', views.ajeit),

还是不能正常的传入后台

FishC 发表于 2024-1-25 11:28:19

tengke 发表于 2024-01-25 11:27
class ajajeit(forms.ModelForm):
    # daa = forms ...

根据您提供的代码,出现问题的可能原因是在表单类`ajajeit`中,您没有提供完整的字段列表给`fields`属性。请确保将所有需要保存的字段都包含在`fields`中。另外,在`ajajeit`视图函数中,我注意到您打印了`uid`和`row`的值,但是没有看到打印`request.POST`来查看POST请求中的数据。请确保您的AJAX请求中的数据能够正常地发送到后台。此外,还要确保后台视图函数可以正确地接收参数。修正过的代码如下所示:

class ajajeit(forms.ModelForm):
    class Meta:
      model = models.aj
      fields = "__all__"

def ajeit(request):
    uid = request.GET.get("uid")
    print(uid)
    row = models.aj.objects.filter(id=uid).first()
    print(row.j, row.bt, row.detail, row.id)
   
    if not row:
      return JsonResponse({"status": False, "error": "not11"})
   
    form = ajajeit(data=request.POST, instance=row)
   
    if form.is_valid():
      form.save()
      return JsonResponse({"status": True})
   
    return JsonResponse({"status": False, "error": form.errors})

请确保您的路由配置也正确,包括请求路径和请求方法。如果问题仍然存在,请提供更多详细信息,以便我们更好地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 提交保存 没有进行数据保存问题