2011-03-08 24 views
8

Web siteme yeni güncellemeler dağıtırken çok can sıkıcı bir sorunla karşılaştım. İki ayrı web sitem var, bunlardan bir tanesi bir geliştirme versiyonu. Ben üretime benim değişiklikleri uygulamak istediğinizde Şimdi nedeniyle hata mesajının çalışmaz:Django: Adını içe aktarılamıyor

File "/usr/lib/python2.6/dist-packages/django/core/handlers/base.py", line 99, in get_response
request.path_info)

File "/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py", line 249, in resolve for pattern in self.url_patterns:

File "/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py", line 278, in _get_url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)

File "/usr/lib/python2.6/dist-packages/django/core/urlresolvers.py", line 273, in _get_urlconf_module
self._urlconf_module = import_module(self.urlconf_name)

File "/usr/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module
import(name)

File "/srv/websites/spelutveckla_se/urls.py", line 21, in
(r'^account/login/$', LoginView.as_view()),

NameError: name 'LoginView' is not defined

farketmez bir şikayet edecek çünkü bu uygulama, görünümü, sınıf veya modülü kaldırmak eğer diğer modül yerine. LoginView bir içe aktarma ifadesinde tanımlanmıştır. Dosyalar, herhangi bir sorun olmadan başka bir alt alan üzerinde çalışan geliştirme dosyalarının (settings.py hariç) yeni bir kopyasıdır. Settings.py'yi birkaç kez kontrol ettim ve doğru ayarların yapıldığından emin oldum (birkaç dizin yolu ile farklılık gösterir). Ayrıca, apache2 www-data kullanıcısının dosyalara erişim izni olduğunu kontrol ettim. apache'yi birkaç kez yeniden başlattım ve dosyaları tekrar tekrar kopyaladım ama hiçbir şey işe yaramıyor.

Çaresizim ve sorunun ne olabileceğine dair bir fikrim yok mu ...?

İşte benim urls.py üstündeki gibi görünüyor:

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 

cevap

22

Büyük olasılıkla modül LoginView bir dairesel ithalat yani LoginView tanımlanan views modülü ithal edildiğinde, tanımlandı vardı Bazı ifadeler, bir şekilde, tam olarak yorumlanmayı bekleyen diğer bir modülü de içe aktardı. İşte

size daha iyi bir fikir vermek için bir örnek:

# 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 kez içe aktarıldığını ve SomeCreateView tipi, hafıza tahsis alır reverse('myapp:some-url') idam alacak ve myapp.urls sonunda Django tarafından ithal edilecek, yalnızca bu myapp.urls, içe aktarılmak üzere myapp.views için süresiz olarak bekleyeceğinden bu mümkün olmayacaktır.

+0

Staging ve Production ile benzer bir sorun var. İlk çalıştırmada sahnedeyken '' '' '' '' '' '' '' '' '' '' '' '' '' 'Cart''' ismini veremem. Sonra birkaç sayfa yenilendikten sonra her şey işe başlar. Üretimde böyle bir şey olmaz. Yine de sorun, sürekli bana bir hata verdiği için ./manage.py komut dosyasını çalıştıramam. – kravc

+0

Tüm pyc dosyasını silmeyi deneyin. –

+0

Teşekkür ederim, bende tam vakayı işaret ettiniz. Modellerimde bir sınıf değişkeni olarak tanımlanan bir 'ters' url. Dairesel ithalat için avlanıyordum, bunun gibi başka garip vakalar değil. Sadece beni çok fazla saç çekerek kurtardım. – Rebs

İlgili konular