2012-01-25 23 views
13

Sto seguendo il numero ufficiale di Django Tutorial 2 ma per qualche motivo non riesco a creare un sito di amministrazione nonostante abbia seguito correttamente tutti i passaggi.Sito amministratore: TemplateDoesNotExist at/admin/

Questo è l'errore che ottengo:

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 

L'errore si verifica dopo che io commento dalle linee seguenti (commentate):

### 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 
) 

Se li io commento di nuovo si libera dell'errore.

ho fare hanno django.contrib.admin nei miei INSTALLED_APPS in settings.py

+0

Cosa hai impostato TEMPLATE_DIRS e TEMPLATE_LOADERS su settings.py –

+0

TEMPLATE_DIRS è vuota (nulla è stato detto nel tutorial) e TEMPLATE_LOADERS ha 'django.template.loaders.filesystem.Loader' e 'django.template.loaders. app_directories.Caricatore '(I caricatori di modelli non sono mai menzionati) – Jarrod

+0

Puoi incollare l'intero codice zip a dropbox o qualcosa del genere? –

risposta

2

Dal momento che funziona su macchine di altre persone, e dal momento che si hanno le directory app loader abilitata, amministratore del sito abilitato a INSTALLED_APPS, e questo è tutto ciò che dovrebbe prendi per i modelli da scoprire (voglio dire, che altro si può fare?) - Posso solo supporre che qualcosa non funzioni con la tua installazione di django.

Questa sarebbe una buona occasione per iniziare a utilizzare virtualenvs e una nuova installazione di Django per escludere le impostazioni:

fuoco su un terminale, passare alla directory del progetto (in realtà non importa ...)

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

Mi sono imbattuto nello stesso problema e ho dovuto forzare pip per ri-scaricare django.

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

Nota: So che l'opzione --no-cache-dir è necessario, io non sono sicuro che le altre opzioni sono tutti obbligatori.

+4

Questo lo ha risolto per me (usando virtualenv). Penso che virtualenv, pip o l'utente (probabilmente) si confondano e django non si installi correttamente quando si usa virtualenv. – Scott

+0

Potrebbe riguardare l'installazione tramite ssl o più ambienti virtuali? Ho riscontrato errori 'SNIMissingWarning' e' InsecurePlatformWarning' quando li usavo, ma ho creato un nuovo ambiente virtuale e ha funzionato, quindi ho eseguito lo stesso comando sul virtualenv precedente e ha funzionato (?) Ma ha gettato quegli stessi errori. – bozdoz

0

Ho riscontrato lo stesso errore, dopo aver installato e disinstallato più volte pip Django, non funziona ancora. Poi ho scaricato il file Django tar.gz dal sito Web Django e l'installazione da questo file va bene. Speriamo che questo possa aiutare qualcuno.

2

Aveva lo stesso problema. Stranamente ho scoperto che a volte gli template e media non vengono copiati dal tuo django/contrib/admin. Pertanto è necessario copiarli nella directory virtuale di env django.

cioè dalla directory /venv/lib/python2.7/site-packages/django/contrib è necessario

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

e

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

Sono così felice che il mio problema è risolto, ma così infastidito dal fatto che ho dovuto spendere più di un ora debuggandolo.

Spero che non sarà necessario :)

+0

[Reinstallare Django con l'opzione --no-binary risolve questo problema senza dover ricreare i link simbolici] (https://stackoverflow.com/a/43747016/3748764). – user3748764

0

Nonostante la loro utilità, le risposte di cui sopra sono parziali. Suppongo che lo sviluppatore dovrebbe sapere cosa sta succedendo al back-end, vale a dire, "come" viene sollevata questa eccezione.

Come si può notare nell'eccezione che l'eccezione è TemplateDoesNotExist e il nome del valore è il percorso e qualcosa che non va nel file "loader.py". Sebbene stavo usando Django 1.1.4, sono abbastanza sicuro che l'eccezione venga sollevata a causa della linea (in loader.py) dove viene controllato os.path.isdir (template_dir). Non riesce a trovare la cartella template (directory) nella cartella django, che si trova nella cartella site-packages nella cartella Lib di python.

Intuitivamente si può dire che è a causa dell'installazione inappropriata di Django. È, tuttavia, un buon esercizio per scoprire la causa dell'eccezione rovistando nella fonte. Quando questo errore si è verificato nel mio progetto, non ho reinstallato django, invece ho copiato le cartelle da root (C:/Python27/django/contrib) - sì, sto usando Windows - alla sua controparte nei pacchetti del sito e ha funzionato !

+0

Si prega di guardare questo [URL] (http://stackoverflow.com/help) sarà utile per migliorare la qualità –

-1

Penso che ci siano alcuni pacchetti che non si è installato in INSTALLED_APPS, nel mio caso ho installato 'Import_Export' da quando ho usato 'importexportmodels

4

Sto usando Django versione 1.9.7 e quando si cerca di aggiungere il admin_tools (menu e dashboard) alla mia applicazione ho avuto un problema simile. Ho trovato che ho dovuto fare tre cose:

  1. modificare l'opzione INSTALLED_APPS in settings.py come segue (nota che le Admin_Tools vengono prima Django contrib, 'mine' è il nome della mia applicazione):

    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. Modifica impostazione modello nel file settings.py come segue (nota l'opzione 'caricatori' che ha ottenuto ha aggiunto, e che APP_DIRS sono ora impostata su false):

    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. E poi finalmente ho aggiornato il mio file urls.py come segue (nota l'inclusione per i Admin_Tools gli 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

Se si passa tra le versioni Python/Django, il problema dell'OP può accadere e la risposta di Abrie riassume bene cosa Avevo bisogno di ottenere un ramo più vecchio (che non fosse stato migrato a Python3 e Django 1.10) per funzionare con il mio virtualenv che stavo usando con il mio ultimo ramo di sviluppo. – sage

2

Ho risolto questo stesso problema reinstallando Django con l'--no-cache-dir opzione:

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

Risolto grazie alla risposta here.

0

mi sono imbattuto in un problema simile si cerca di configurare django-admin-tools per Django 2.0.2

Alla fine ho capito di lavoro. Ecco le mie impostazioni 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', 
       ] 
     }, 
    }, 
] 

Questo ha funzionato anche se ho annullato il modello di amministrazione predefinito.

Basta essere sicuri di prendere nota di dove collocare le app django-admin-tools. Vedi la risposta di @Abrie Nel sopra.

Problemi correlati