2012-01-25 13 views
13

Podążam za oficjalną wersją Django Tutorial 2, ale z jakiegoś powodu nie mogę utworzyć witryny administratora, mimo że postępuję zgodnie ze wszystkimi instrukcjami.Witryna administracyjna: TemplateDoesNotExist at/admin/

Jest to błąd otrzymuję:

TemplateDoesNotExist at /admin/ 
admin/login.html 
Request Method: GET 
Request URL: http://127.0.0.1:8000/admin/ 
Django Version: 1.3.1 
Exception Type: TemplateDoesNotExist 
Exception Value:  
admin/login.html 
Exception Location: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/loader.py in find_template, line 138 
Python Executable: /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python 
Python Version: 2.7.2 
Python Path:  
['/Users/jcugley/Documents/Programming/Python/Django/mysite', 
'/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', 
'/Library/Python/2.7/site-packages'] 
Server time: Tue, 24 Jan 2012 18:40:03 -0600 

Błąd występuje po I odkomentuj poniższe linie (komentowane):

### urls.py ### 
from django.conf.urls.defaults import patterns, include, url 

from django.contrib import admin # THIS LINE 
admin.autodiscover() # THIS LINE 

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), # THIS LINE 
) 

Gdybym skomentować je ponownie pozbywa błędu.

zrobić mieć django.contrib.admin w moich INSTALLED_APPS w settings.py

+0

Co ustawić TEMPLATE_DIRS i TEMPLATE_LOADERS na settings.py –

+0

TEMPLATE_DIRS jest pusta (nic o tym wspomniano w tutorialu) i TEMPLATE_LOADERS ma „django.template.loaders.filesystem.Loader” i „django.template.loaders. katalogi_produktów.Loader (ładowanie szablonów również nigdy nie jest wspomniane) – Jarrod

+0

Czy możesz wkleić cały kod zip w Dropbox czy coś w tym stylu? –

Odpowiedz

2

Ponieważ pracuje na maszynach innych ludzi, a ponieważ masz aplikacji katalogów ładowarka włączona, panel administracyjny włączony INSTALLED_APPS, i to wszystko powinno wziąć szablony do odkrycia (to znaczy, co więcej można zrobić?) - Mogę tylko założyć, że coś jest nie tak z twoją instalacją django.

Byłoby to dobra okazja, aby rozpocząć korzystanie virtualenvs i nową instalację Django wykluczyć ustawienia:

odpalić terminal, przejdź do katalogu projektu (w rzeczywistości nie ma znaczenia ...)

pip install virtualenv # if you don't have it. 

virtualenv --no-site-packages env 
# this creates a virtual python environment that doesn't include system packages 

source env/bin/activate 
# this forces your bash session to use that environment 

pip install django 
# installs a fresh copy of django to your new environment 

cd path_to_my_django_project  
# now go to your site directory 

python manager.py runserver 
# visit admin site. 
22

Wpadłem na ten sam problem i musiałem wymusić pip, aby ponownie pobrać django.

pip install -r requirements.txt --ignore-installed --force-reinstall --upgrade --no-cache-dir 

Uwaga: Wiem, że opcja --no-cache-dir jest konieczne, nie jestem pewien, że inne opcje są wymagane.

+4

Naprawiono to dla mnie (używając virtualenv). Wydaje mi się, że albo virtualenv, pip, albo użytkownik (prawdopodobnie) są zdezorientowani, a django nie instaluje się poprawnie podczas używania virtualenv. – Scott

+0

Może dotyczyć instalacji za pośrednictwem SSL lub wielu środowisk wirtualnych? Otrzymałem błędy 'SNIMissingWarning' i' InsecurePlatformWarning' podczas korzystania z tego, ale stworzyłem nowe wirtualne środowisko i zadziałało, następnie wykonałem to samo polecenie na poprzednim virtualenv i zadziałało (?), Ale rzuciło te same błędy. – bozdoz

0

Spotykam ten sam błąd, po kilkukrotnym zainstalowaniu pip i deinstalacji Django, to nadal nie działa. Następnie pobieram plik Django tar.gz ze strony Django i instaluję z tego pliku, wszystko jest w porządku. Mam nadzieję, że to może pomóc komuś.

2

Miał ten sam problem. O dziwo, stwierdziłem, że czasami template i media nie są kopiowane z twojego django/contrib/admin. Dlatego musisz skopiować je do swojego wirtualnego katalogu env django.

czyli z katalogu /venv/lib/python2.7/site-packages/django/contrib trzeba

ln -s ~/Sites/your_dj_app/venv/django/contrib/admin/templates templates

i

ln -s ~/Sites/your_dj_app/venv/django/contrib/admin/media media

jestem tak zadowolony, że mój problem jest rozwiązany, ale tak zły, że musiałem wydać ponad godzina debugowania go.

nadzieję, że nie będzie musiał :)

+0

[Ponowna instalacja Django z opcją --no-binary rozwiązuje ten problem bez konieczności ponownego tworzenia linków symbolicznych] (https://stackoverflow.com/a/43747016/3748764). – user3748764

0

Pomimo ich użyteczności, wyżej wymienione odpowiedzi są częściowe. Rozumiem, że programista powinien wiedzieć, co dzieje się na zapleczu, a mianowicie "jak" jest zgłaszany ten wyjątek.

Jak widać w wyjątku wyjątek to TemplateDoesNotExist, a nazwa wartości jest ścieżką, a coś jest nie tak z plikiem "loader.py". Chociaż używałem Django 1.1.4, jestem prawie pewny, że wyjątek jest podnoszony z powodu linii (w loader.py), gdzie sprawdzana jest os.path.isdir (template_dir). Nie można znaleźć folderu szablonu (katalogu) w folderze django, który znajduje się w folderze site-packages w folderze Lib Pythona.

Intuicyjnie można powiedzieć, że jest to spowodowane nieodpowiednią instalacją django. Jest jednak dobrym ćwiczeniem, aby znaleźć przyczynę wyjątku, grzebiąc w źródle. Kiedy ten błąd wystąpił w moim projekcie, nie zainstalowałem ponownie django, zamiast tego skopiowałem foldery z katalogu głównego (C:/Python27/django/contrib) - tak, używam systemu Windows - do jego odpowiednika w pakietach witryny i działało !

+0

Proszę spojrzeć na to [URL] (http://stackoverflow.com/help) będzie przydatny, aby podnieść swoją jakość w górę –

-1

Myślę, że istnieją pewne pakiety, które nie zostały zainstalowane w INSTALLED_APPS, w moim przypadku mam zainstalowane „Import_Export”, ponieważ użyłem „importexportmodels

4

Używam Django Version 1.9.7 i gdy próbuje dodać admin_tools (menu i dashboard) do mojej aplikacji Miałem podobny problem. Znalazłem musiałem zrobić trzy rzeczy:

  1. edytować opcję INSTALLED_APPS w settings.py następująco (wiadomości, że admin_tools przyjść przed django contrib „miny” to nazwa mojego wniosku):

    INSTALLED_APPS = [ 
        'admin_tools', 
        'admin_tools.theming', 
        'admin_tools.menu', 
        'admin_tools.dashboard', 
        'django.contrib.admin', 
        'django.contrib.auth', 
        'django.contrib.contenttypes', 
        'django.contrib.sessions', 
        'django.contrib.messages', 
        'django.contrib.staticfiles', 
        'mines' 
    ] 
    
  2. Zmień ustawienia szablonu w pliku settings.py następująco (uwaga opcja „” ładowarek, które zostało dodane, i że APP_DIRS są teraz ustawione na fałszywej):

    TEMPLATES = [{ 
        'BACKEND': 'django.template.backends.django.DjangoTemplates', 
        'DIRS': [], 
        'APP_DIRS': False, 
        'OPTIONS': { 
         'context_processors': [ 
          'django.template.context_processors.debug', 
          'django.template.context_processors.request', 
          'django.contrib.auth.context_processors.auth', 
          'django.contrib.messages.context_processors.messages', 
         ], 
         'loaders': [ 
          'django.template.loaders.filesystem.Loader', 
          'django.template.loaders.app_directories.Loader', 
          'admin_tools.template_loaders.Loader', 
         ], 
        }, 
    }] 
    
  3. I wreszcie zaktualizowałem mój plik urls.py następująco (uwaga include dla admin_tools adresów URL):

    from django.conf.urls import include,url 
    from django.contrib import admin 
    from mines.views import SummaryByMapIcon 
    
    urlpatterns = [ 
        url(r'^admin_tools/', include('admin_tools.urls')), 
        url(r'^admin/', admin.site.urls), 
        url(r'^summarybymapicon$', SummaryByMapIcon, name='summarybymapicon'), 
    ] 
    
+0

Jeśli przełączasz się między wersjami Python/Django, problem OP może się zdarzyć, a odpowiedź Abrie ładnie podsumowuje co Potrzebowałem starszego oddziału (który nie został przeniesiony do Python3 i Django 1.10) do pracy z moim virtualenv, którego używałem z moją najnowszą gałęzią programistyczną. – sage

2

I rozwiązać ten sam problem przy ponownej instalacji Django z --no-cache-dir opcja:

pip uninstall django 
pip install django --no-cache-dir 

Rozwiązane dzięki odpowiedzi here.

0

wpadłem na podobny problem próbuje skonfigurować django-admin-tools dla Django 2.0.2

końcu mam to działa. Oto moje ustawienia TEMPLATES.

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates')], 
     'APP_DIRS': False, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
      'loaders' : [ 
       'django.template.loaders.filesystem.Loader', 
       'django.template.loaders.app_directories.Loader', 
       'admin_tools.template_loaders.Loader', 
       ] 
     }, 
    }, 
] 

Zadziałało to tak, jak przejąłem domyślny szablon administratora.

Pamiętaj tylko o tym, gdzie umieścić aplikacje django-admin-tools. Zobacz odpowiedź @Abrie Nel powyżej.

Powiązane problemy