【问题标题】:ViewDoesNotExist ErrorViewDoesNotExist 错误
【发布时间】:2011-07-02 11:57:28
【问题描述】:

我正在尝试做一个简单的 Django 应用程序,从数据库中读取并显示员工列表。为此,我定义了模型并通过 Django admin 将值输入到数据库中。但是在尝试显示数据库中的数据时,我遇到了一个错误,“ViewDoesNotExist at /employeeProfile/:无法导入 task.employeeDetails.views。错误是:无法导入名称 emp_profile”。我对 django 比较陌生,所以请帮忙我来解决这个问题。我将代码粘贴在这里。enter code here VIEWS.PY

from django.shortcuts import render_to_response
from django.contrib.auth.models import*
from task.employeeDetails.models import *
from django.conf import settings
from django.http import HttpResponse
from task.employeeDetails import emp_profile

def employeeList(request):
    tableList = EmployeeDetails.objects.all()
    return render_to_response('employeeList.html', {'emp_list': tableList})

def employeeProfile(request):
    profile = EmployeeDetails.objects.all()
    return render_to_response('employeeProfile.html',{'emp_profile':emp_profile})

URLS.PY

(r'^employeeProfile/$','task.employeeDetails.views.employeeProfile'),

模板

<html>
<body>

{%for emp in emp_profile%}
<tr> <td>{{ emp.userName }} {{ emp.designation }} {{  emp.employeeID }}</td> </tr><td>
{%endfor%}
</table></h4>
</body>
</html>

【问题讨论】:

  • 如果你运行./manage.py shell,你能导入employeeDetails.views吗?如果没有,您介意提供完整的回溯吗?
  • 我给出了两个网址,第一个是employeeList,第二个是employeeProfile。我正在第一个 url (employeeList) 中显示值。但是对于 'employeeProfile' url 出现上述错误。我对两个 url 都遵循了相同的模式,因为两者都在从同一个表中显示相同的数据

标签: python django django-models django-templates django-views


【解决方案1】:

我假设你想要:

def employeeProfile(request): profile = EmployeeDetails.objects.all() 
return render_to_response('employeeProfile.html',{'emp_profile':profile})

正如 Yuji 指出的那样,似乎 emp_profile 没有在任何地方定义

【讨论】:

  • 那是相切的。我是说它是通过第 6 行的导入定义的。这就是为什么我很困惑将 emp_profile 的视图函数引用更改为 profile 会解决任何问题.. 它不应该仍然引发导入错误吗?
  • 哦。好电话,@Yuji。我认为他的编辑器可能会自动生成该行,这可能是实际触发 ImportError 的原因。 :)
  • @tangentstorm --- 哦,我什至不知道会发生这种情况。我的编辑器太神奇了。 :D
【解决方案2】:

from task.employeeDetails import emp_profile

emp_profile 是什么?确切地在哪里?从外观上看,employeeDetails 是您的目录的名称,因此除非emp_profileemployeeDetails/ 中的文件,在employeeDetails/__init__.py 中定义(或以其他方式导入那里),否则它将引发导入错误。

【讨论】:

    【解决方案3】:
    def employeeProfile(request):
        profile = EmployeeDetails.objects.all()
        return render_to_response('employeeProfile.html',{'emp_profile':emp_profile})
    

    您在第 2 行将其命名为 profile,然后您尝试在第 3 行将其作为 emp_profile 放入字典中。

    【讨论】:

    • 这很奇怪,但错误来自导入的最后一行“无法导入名称emp_profile
    • Django 可能正在捕获错误。它与不存在的视图无关,并且与 NameError 在尝试引用实际上尚未声明的变量 (emp_profile) 时被抛出有关。
    猜你喜欢
    • 1970-01-01
    • 2011-06-20
    • 2013-04-13
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多