Django:无法导入名称

mrm*_*vin 8 django import corruption

我刚刚在我的网站上部署新的更新时遇到了一个非常烦人的问题.我有两个单独的网站,而其中一个是开发版本.现在,当我想将我的更改应用于生产时,由于错误消息,它将无法工作:

在get_response
request.path_info中输入文件"/usr/lib/python2.6/dist-packages/django/core/handlers/base.py",第99行

文件"/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py",第249行,以解决self.url_patterns中的模式:

文件"/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py",第278行,在_get_url_patterns
patterns = getattr(self.urlconf_module,"urlpatterns",self.urlconf_module)

文件"/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py",第273行,在_get_urlconf_module中自我
._urlconf_module = import_module(self.urlconf_name)

在import_module
import(name)中输入文件"/usr/lib/python2.6/dist-packages/django/utils/importlib.py",第35行

文件"/srv/websites/spelutveckla_se/urls.py",第21行,在
(r'^ account/login/$',LoginView.as_view())中,

NameError:未定义名称"LoginView"

如果我删除该应用程序,视图,类或模块并不重要,因为它会抱怨其他模块.LoginView是在import语句中定义的.这些文件只是在另一个子域上运行的开发文件的新副本(除了settings.py)没有任何问题.我已经多次检查settings.py并确保设置了正确的设置(因几个目录路径而异).我还检查过apache2 www-data用户是否有权访问这些文件.我也重新启动了几次apache并重复复制文件,但没有任何作用.

我很绝望,不知道问题可能是什么......?

这是我的urls.py在顶部的样子:

from django.conf.urls.defaults import *
from django.conf import settings
from django.views.generic import DetailView, ListView, TemplateView
from django.contrib import admin
from project.models import Project
from project.views import Detail, EditView as EditProject, CreateProjectView, EditProjectLinksView, EditProjectFeedsView, EditProjectTagsView, EditMultimediaView, PostForumTopic, AudioFormset
from frontpage.views import FrontpageView
from userprofile.views import UserRegistrationView, UserRegistrationActivationView, LogoutView, UserProfileView, LoginView, EditProfileView, CreateUserProfileView
from registration.views import activate as UserActivatedView
Run Code Online (Sandbox Code Playgroud)

Fil*_*vić 22

您很可能在模块LoginView中定义了循环导入,即当您导入views定义的模块时LoginView,某些语句反过来导入了一些仍在等待完全解释的其他模块.

这是一个给你一个更好主意的例子:

# myapp.urls

from django.conf.urls.defaults import *
from myapp import views

urlpatterns = patterns('',
    # ...
)

# myapp.views

from django.core.urlresolvers import reverse
from django.views.generic.edit import CreateView

class SomeCreateView(CreateView):

    # BOOM!
    success_url = reverse('myapp:some-url')
Run Code Online (Sandbox Code Playgroud)

一旦myapp.views导入并且SomeCreateView类型被分配到内存,reverse('myapp:some-url')将被执行并myapp.urls最终由Django导入,只有那将是不可能的,因为myapp.urls将无限期地等待myapp.views导入.