首页 > 解决方案 > 在 django views.py 中获取 NameError,因为 NameError : name 'edit_load_table' is not defined

问题描述

name 'edit_load_table' is not defined
Request Method: GET
Request URL:    http://127.0.0.1:8000/edit_load/N193
Django Version: 3.1.4
Exception Type: NameError
Exception Value:    
name 'edit_load_table' is not defined
Exception Location: C:\Users\Virti Parekh\projects\try\total_load\views.py, line 45, in edit_load
Python Executable:  C:\Users\Virti Parekh\AppData\Local\Programs\Python\Python37\python.exe
Python Version: 3.7.6
Python Path:    
['C:\\Users\\Virti Parekh\\projects\\try',
 'C:\\Users\\Virti '
 'Parekh\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip',
 'C:\\Users\\Virti Parekh\\AppData\\Local\\Programs\\Python\\Python37\\DLLs',
 'C:\\Users\\Virti Parekh\\AppData\\Local\\Programs\\Python\\Python37\\lib',
 'C:\\Users\\Virti Parekh\\AppData\\Local\\Programs\\Python\\Python37',
 'C:\\Users\\Virti '
 'Parekh\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages']
Server time:    Sat, 05 Dec 2020 19:04:19 +0000

我想从表“edit_load_table”中获取特定的 empId 数据。当我单击加载详细信息(作为锚标记)时,它将以表格格式获取特定 empId 数据的数据。

这是我的 models.py 代码

class facultyload(models.Model):
    empId = models.CharField(max_length=20)
    name = models.CharField(max_length=50)
    total_load = models.IntegerField()

    def __str__(self):
        return self.empId

class edit_load_table(models.Model):
    empId = models.CharField(max_length=20) 
    name = models.CharField(max_length=50)
    subject_abv = models.CharField(max_length=10)
    subject_load = models.IntegerField()
    subject_type = models.CharField(max_length=10)
    id_key = models.IntegerField()
    semester = models.CharField(max_length=20)
    
    def __str__(self):
        return self.empId

这是我的views.py 代码

def edit_load(request, empId):
    editload = edit_load_table.objects.get(str=empId)  
    return render(request,"edit_load.html",{'editload':editload})

由于我的 empId 包含字母和数字,所以我给了 str=empId。在我的 urls.py 中,我通过了

path('edit_load/<str:empId>',views.edit_load)

任何人都可以帮助我解决这个错误,因为我是 Django 和 python 的新手。谢谢你!

edit_load.html

<!DOCTYPE html>
<html>
<head>
    <title>Faculty's Subject wise Load</title>

    {% load static %} 
       <link rel="stylesheet" href="{% static 'styles/style-main.css' %}"/>
       <link rel="stylesheet" href="{% static 'styles/css/bootstrap.min.css' %}"/>
    
</head>
<body>
        <div class="center-div">
            {% csrf_token %}
            <br>
            <br>
            <h1>Faculty List with their load</h1>
            <div class="table-responsive">
                <table>
                    <thead>
                        <tr>
                            <th>Sr No.</th>
                            <th>Subject Name</th>
                            <th>Subject Load</th>
                            <th>Subject Type</th>
                            <th>Semester</th>
                            <th colspan="2">operation</th>
                        </tr>
                    </thead>                   
                    <tbody>
                        {% for faculty_load in edit_load %}

                                <tr>
                                    <td>{{faculty_load.id_key}}</td>
                                    <td>{{faculty_load.subject_abv}}</td>
                                    <td>{{faculty_load.subject_load}}</td>
                                    <td>{{faculty_load.subject_type}}</td>
                                    <td>{{faculty_load.semester}}</td>
                                    <td><a href="/facultysubjectDetails/{{faculty_load.id}}" ><span class="btn btn-success">Edit</span></a></td>
                                    <td><a href="/deletedetails/{{faculty_load.id}}" ><span class="btn btn-danger">Delete</span></a></td>
                                </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>
        </div>
</body>
</html>

我调用edit_load.html文件的一段代码

<td><a href="/edit_load/{{loads.empId}}" data-toggle="tooltip" data-placement="top" title="load details"  name="load details" method="GET">Load Details</a></td>

标签: python-3.xdjangodjango-modelsdjango-viewsdjango-urls

解决方案


我解决了上述错误也解决了我在评论中提到的错误。我更改了代码的某些部分。在views.py 中,我使用视图从一个ID 返回多个数据引用。

视图.py

def edit_load(request, empId):
    parent = edit_load_table.objects.filter(empId=empId)
    context = {'parent':parent}
    return render(request,"edit_load.html",context)

在我之前的 HTML 文件中,我使用了这个 {% for Faculty_load in edit_load %} 这是错误的,在我得到我们必须传递我在上下文中提到的值之后它给了我一个错误。

{% for loads in parent %}
                                    <tr>
                                        <td>{{loads.subject_abv}}</td>
                                        <td>{{loads.subject_load}}</td>
                                        <td>{{loads.subject_type}}</td>
                                        <td><a href="/editfacultydetails/{{loads.id}}" ><span class="btn btn-sm btn-info">Edit</span></a></td>
                                        <td><a href="/deletefacultydetails/{{loads.id}}" ><span class="btn btn-sm btn-danger">Delete</span></a></td>
                                    </tr>
{% endfor %}

我希望我的回答会有用。而且在评论中提到的建议对我很有用。谢谢你。


推荐阅读