【问题标题】:where is the error in the update function?更新功能的错误在哪里?
【发布时间】:2019-11-29 17:01:09
【问题描述】:

我有一个包含要提交的表单并允许用户创建更新存储数据的 django 项目。

问题是一旦用户进入更新页面,系统就会崩溃并显示以下错误:

赋值前引用的局部变量“可疑”

urls.py

 path('update/<int:pk>/',update,name = 'update'),

update.html

{% extends "base.html" %}
{% load static %}
{% block body %}

<body>


  <div class="lines">
  <div class="line"></div><div class="line"></div>
  <div class="line"></div><div class="line"></div>
  <div class="line"></div><div class="line"></div><div class="line"></div>
  </div>

  {% for member in instance %}
        <form enctype="multipart/form-data">
    <div id='left-column-Input' class="formInput" include="select()"> 
      <div class="forminputs">
        <input type="text" id="fname" name="fname" autocomplete="off" required />
          <label for="fname" class="label-name">
            <span class="content-name" name="fname">{{member.member_name}}</span>
          </label>
      </div>

    <div class="forminputs">
      <input type="text" id="lname" name="lname" autocomplete="off" required />
      <label for="lname" class="label-name">
        <span class="content-name" name="lname">{{member.member_last_name}}</span>
      </label></div>
    <div class="forminputs">
      <input type="text" id="fatherName" name="fatherName" autocomplete="off" required />
      <label for="fatherName" class="label-name">
        <span class="content-name" name="fatherName">{{member.member_father_name}}</span>
      </label></div>
    <div class="home-Button">
      <button id="edit" name="edit" type="submit">Edit</button>
      <button id="clear" name="clear" type="submit">Clear</button>
    </div>
    </div>

{% endfor %}

  <script type="text/javascript">
    $(document).ready(function(){                           
      $("#edit").on('click',function(event){
        event.preventDefault()
        fName=$('#fname').val()
        lName = $('#lname').val()
        fatherName = $('#fatherName').val()

        $.ajax({
              url:'/blog/update',
              method:'POST',

          data: {
                FName: fName,
                LName: lName,
                FatherName: fatherName,
              },

              headers:{
                'X-CSRFToken':'{{csrf_token}}'
            }
          }).done(function(msg){
              location.href='/blog/list'
          }).fail(function(err){
            alert(err)
        })
      })
    })
  </script>
</form>

</body>
{% endblock %}

views.py

   def update(request,pk):
   #deny anonymouse user to enter the  detail page
    if not request.user.is_authenticated:
            return redirect("login")
    else:
      member = member()# the class modal
      member = get_object_or_404(member, pk=pk)standard **page not found**
      if request.method =="POST":
        member = member()
        member.member_name = request.POST['FName']
        member.member_last_name = request.POST['LName']
        member.member_father_name = request.POST['FatherName']

        member.save()

      context = {
        "title":member.member_name,
        "instance":member,
      }

    return render(request,'blog/update.html',context)    

我将不胜感激任何帮助

【问题讨论】:

  • member = get_object_or_404(suspect, pk=pk)。变量suspect 定义在哪里?它没有在函数之前的任何地方定义,这就是你得到异常的原因。
  • @solarissmoke 我的错我添加了变量成员。但仍然是同样的错误
  • 添加 member 无济于事......您仍然没有在代码中的任何位置定义 suspect 变量。整行中还有其他各种语法错误。
  • 没有可疑变量更改为成员变量

标签: django ajax forms runtime-error


【解决方案1】:

您的网址需要 pk。在您的视图返回语句的上下文中,您没有将可疑 id 作为 pk 传递。

path('update/<int:pk>/',update,name = 'update'),

suspect.id 将作为{% url ... %} 的参数使用

【讨论】:

  • 但我将 id 作为更新函数中的参数。 member = get_object_or_404(怀疑,pk=pk)
  • 您需要在您的视图的返回声明中提供 pk 作为上下文的一部分。所以你的上下文将是 context = { "pk":suspect.id, "title":member.member_name, "instance":member }
  • 好像您编辑了原始问题。现在你需要在你的views.py中导入嫌疑犯。
  • 为了返回上下文,我需要在 ajax 调用中分配它,对吗?能够在函数中获取请求.. 是的,我导入了模型类
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
相关资源
最近更新 更多