django ViewDoesNotExist

时间:2010-08-16 20:08:05

标签: django

我遇到了一个奇怪的错误,我无法追踪它。堆栈跟踪也没有给出关于错误位置的任何线索。它只是给我标准的urlresolvers.py ViewDoesNotExist异常。以下是错误消息:

Could not import myapp.myview.views. Error was: No module named model

起初我以为我忘记在我的代码中的某个地方放置一个“s”,但在搜索整个代码库后,情况并非如此。

这是引用:

File "C:\Python25\Lib\site-packages\django\core\handlers\base.py" in get_response
  91.                         request.path_info)
File "C:\Python25\Lib\site-packages\django\core\urlresolvers.py" in resolve
  216.                     sub_match = pattern.resolve(new_path)
File "C:\Python25\Lib\site-packages\django\core\urlresolvers.py" in resolve
  216.                     sub_match = pattern.resolve(new_path)
File "C:\Python25\Lib\site-packages\django\core\urlresolvers.py" in resolve
  216.                     sub_match = pattern.resolve(new_path)
File "C:\Python25\Lib\site-packages\django\core\urlresolvers.py" in resolve
  123.             return self.callback, args, kwargs
File "C:\Python25\Lib\site-packages\django\core\urlresolvers.py" in _get_callback
  132.             raise ViewDoesNotExist("Could not import %s. Error was: %s" % (mod_name, str(e)))

Exception Value: Could not import myapp.myview.views. Error was: No module named model

6 个答案:

答案 0 :(得分:15)

根据您发布的内容,似乎错误发生在myapp.myview.views中。

你已经提到寻找“模特”拼写错误,这很好。您也可以尝试让Django验证您的模型以确保它们可以正确导入(在Django项目根目录中运行):

python manage.py validate

除此之外,只需继续关注myapp.myview.views中的导入,直到看到奇怪的东西为止。您可以通过打开shell来检查是否所有内容都可以正确导入:

python manage.py shell

尝试从那里导入和/或尝试。

除此之外,如果您发布完整的追溯,有人可能会更多地帮助您。祝你好运!

答案 1 :(得分:3)

我遇到了同样的错误,我解决了我的问题。如果您有forms.py,请确保所有表单字段都有效。出于某种原因,如果您的forms.py文件有表单字段错误,则会导致此异常。

答案 2 :(得分:0)

所以myapp/myview/views.py导入model并失败。 import语句是什么样的?

答案 3 :(得分:0)

您可以通过打开shell来检查是否所有内容都可以正确导入:

python manage.py shell

创建一个运行环境,就像有请求和响应一样。我相信如果你这样做,你可以了解这个问题,因为我已经得到它并管理它。

祝你好运。

答案 4 :(得分:0)

对我来说,无法导入的视图有一个糟糕的装饰者调用。尝试评论装饰者。

#@login_required(login_url=reverse('bad!'))
def view_name(request):

具体而言,反过来就是失败。将其更改为

@login_required(login_url='http://usatoday.com')
def view_name(request):

的工作原理。但是,奇怪的是,这个网址并不起作用:

@login_required(login_url='http://foxnews.com')
def view_name(request):

(是的,这是一个笑话)

我刚刚发现我应该使用reverse_lazy,所以这是最终的解决方案:

@login_required(login_url=reverse_lazy('bad!'))
def view_name(request):

奇怪这会导致ViewDoesNotExist错误。

答案 5 :(得分:0)

我遇到了类似的错误:
这是app的urls.py。
我忘了在urlpatterns的开头添加''

只需将''添加到urlpatterns 即可     来自django.conf.urls导入模式,include,url

urlpatterns = patterns('',
    url(r'^profile<url name>/$','userprofile.views.user_profile<location of view>'),
)