【问题标题】:Django ViewDoesNotExist when it doesDjango ViewDoesNotExist 时
【发布时间】:2019-05-14 21:50:46
【问题描述】:

我有一个运行 Twisted 服务的 django 应用程序,该服务无法解析某些小程序的视图。

当我在 Django 开发服务器上运行应用程序时,它加载正常,但是当我在 Twisted 上运行它时,当我在浏览器中导航到这些小程序时,我收到错误 Could not import apps.ai_stats.views. Error was: No module named aidb,唯一的问题是aidb.py文件绝对位于这些小程序目录中。我的结构如下。

apps/
    ai_stats/
        __init__.py
        ai2.py
        aidb.py
        models.py
        urls.py
        views.py
    __init__.py
    manage.py
    settings.py
    urls.py
    views.py

我不知道为什么它不会加载这个特定的模块。我在一个应用程序中有一堆不同的小程序,有些可以使用,有些则不能。如果需要任何其他信息,请告诉我。

这是我的 views.py 文件: 它调用另一个名为 ai2.py 的文件,然后调用 aidb.py。

from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

import ai2


def index(request):
    # ai2.refresh_cache()
    return render_to_response('ai_stats/index.html', locals())
    # return HttpResponseRedirect(reverse('apps.ai_stats.views.dashboard', kwargs={'env':ai2.PROD}))


def dashboard(request, env):
    ai2.refresh_cache()
    # env = ai2.PROD
    mf_error, mf_data, _ = ai2.AIStats().data_for_chart('most_failures', env=env)
    mc_error, mc_data, _ = ai2.AIStats().data_for_chart('most_calls', env=env)
    wp_error, wp_data, _ = ai2.AIStats().data_for_chart('worst_performing', env=env)
    error = (mf_error or '') + (mc_error or '') + (wp_error or '')
    cache_timestamp = ai2.data_cache['timestamp']
    return render_to_response('ai_stats/dashboard.html', locals())


def drill(request, env, chart):
    # env = ai2.PROD
    row_limit = int(request.GET.get('limit', 100))
    error, data, _ = ai2.AIStats().data_for_chart(chart, env=env, limit=row_limit)
    cache_timestamp = ai2.data_cache['timestamp']
    return render_to_response('ai_stats/drill_%s.html' % chart, locals())


def dash_data(request, env, chart):
    # env = ai2.PROD
    error, data, chart_type = ai2.AIStats().data_for_chart(chart, env=env, params=request.GET)
    r = render_to_response('ai_stats/%s.xml' % chart, locals())
    if chart_type == ai2.GRAPH_CHART:
        r['Content-Type'] = 'text/xml'
    return r


def pop(request, env, chart):
    pop_template = 'pop_mtd'
    if chart == 'all_mtd':
        pop_template = 'pop_all'
    ops_chart = '%s_ops' % chart
    return render_to_response('ai_stats/' + pop_template + '.html', locals())

这是完整的回溯:

Environment:


    Request Method: GET
Request URL: https://0.0.0.0/ai_stats/

Django Version: 1.3.1
Python Version: 2.7.5
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'django.contrib.staticfiles',
 'apps.minisar',
 'apps.mock',
 'apps.actional',
 'apps.ai_stats',
 'apps.health',
 'apps.soap',
 'apps.directentry',
 'apps.toys',
 'apps.solutions']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware')


Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  101.                             request.path_info)
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
  252.                     sub_match = pattern.resolve(new_path)
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
  252.                     sub_match = pattern.resolve(new_path)
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
  158.             return ResolverMatch(self.callback, args, kwargs, self.name)
File "/usr/lib/python2.7/site-packages/django/core/urlresolvers.py" in _get_callback
  167.             raise ViewDoesNotExist("Could not import %s. Error was: %s" % (mod_name, str(e)))

Exception Type: ViewDoesNotExist at /ai_stats/
Exception Value: Could not import apps.ai_stats.views. Error was: No module named aidb

【问题讨论】:

  • __init__.py ?并显示 INSTALLED_APPS 值。
  • 它存在。我会编辑我的帖子。
  • apps.ai_stats.views 中的某些内容正在尝试导入aidb。你能显示那个代码吗?
  • 我添加了我的 views.py 文件。它有一个 import 语句导入一个名为 ai2 的模块,该模块在 ai2.py 文件中从aidb 导入一个函数。
  • 在这种情况下,您也应该显示您的ai2 文件。

标签: python django python-2.7 django-views


【解决方案1】:

我不知道为什么,但一时兴起,我决定将文件重命名为aidb2 并更改导入并且它起作用了。我根本无法解释。

【讨论】:

  • @Dave2e 这是一个自我回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2013-04-13
  • 2011-07-02
  • 1970-01-01
相关资源
最近更新 更多