Django: не удается импортировать имя


Я только что столкнулся с очень досадной проблемой при развертывании новых обновлений на моем веб-сайте. У меня есть два отдельных веб-сайта, в то время как один из них является версией разработки. Теперь, когда я хочу применить свои изменения к производству, он не будет работать из-за сообщения об ошибке:

Файл "/usr/lib/python2.6/dist-packages/django/core/handlers/base.py", строка 99, в get_response
запрос.path_info)

Файл "/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py", строка 249, в разрешении для паттерна в сам.url_patterns:

Файл "/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py", строка 278, in _get_url_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(самовыдвижение.urlconf_name)

Файл "/usr/lib/python2.6/dist-packages/django/utils/importlib.py", строка 35, в import_module
импорт (имя)

Файл "/srv/websites/spelutveckla_se/urls.py", строка 21, in
(r ' ^аккаунт / логин/$', 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
1 8

1 ответ:

Скорее всего, у вас был циклический импорт в модуле 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')

Как только myapp.views будет импортирован и тип SomeCreateView будет выделен в память, reverse('myapp:some-url') будет выполнен, и ваш myapp.urls в конечном итоге будет импортирован Django, только то, что это никогда не будет возможно, так как myapp.urls будет бесконечно ждать, пока myapp.views будет импортирован.