2016-10-12 7 views
0

У меня есть структура проекта, как этотШаблоны правильно отображаются на сервере развертывания, но ошибка TemplateDoesNotExist на runserver

mainproject 
├── manage.py 
├── mainproject 
│   ├── settings.py 
│   ├── templates 
│   │   └── mainproject 
│   │    └── index.html 
│   ├── urls.py 
│   ├── views.py 
│   └── wsgi.py 
└── app 
    ├── admin.py 
    ├── apps.py 
    ├── forms.py 
    ├── models.py 
    ├── templates 
    │   └── app 
    │    ├── index.html 
    │    └── abc.html 
    ├── urls.py 
    └── views.py 

Теперь в моем settings.py У меня есть

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': ['mainproject/templates', 'app/templates'], 
     'APP_DIRS': True, 
     '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', 
      ], 
     }, 
    }, 
] 

Когда я использую это на основной домен на моем сервере развертывания (развернутый с использованием nginx и uwsgi), он работает хорошо.

Я могу получить доступ к индексу MainProject по адресу domain.com и индекс приложения на domain.com/app

Но при использовании runserver только domain.com:8000/app работы и domain.com:8000TemplateDoesNotExist at / дает ошибку.

Почему так и как это можно исправить?

Шаблон загрузчика посмертных:

Using engine django: 
django.template.loaders.filesystem.Loader: /home/mohit/mainproject/templates/mainproject/index.html (Source does not exist) 
django.template.loaders.filesystem.Loader: /home/mohit/app/templates/mainproject/index.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /home/mohit/Env/mainproject/lib/python2.7/site-packages/django/contrib/admin/templates/mainproject/index.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /home/mohit/Env/mainproject/lib/python2.7/site-packages/django/contrib/auth/templates/mainproject/index.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /home/mohit/mainproject/app/templates/mainproject/index.html (Source does not exist) 

Если изменить DIRS строку в TEMPLATES в settings.py и сделать его

'DIRS': ['mainproject/mainproject/templates', 'app/templates'], 

Затем он работает на runserver и не работает на сервере развертывания.

+0

Попробуйте использовать относительные пути в настройках. http://www.morethanseven.net/2009/02/11/django-settings-tip-setting-relative-paths/ – xtranophilist

+0

Пути шаблонов шаблонов не будут одинаковыми на серверах разработки и производства. Как отмечалось выше, всегда лучше использовать относительные пути – Amar

+0

Спасибо, ребята, что сработало. Если вы можете опубликовать это в качестве ответа, я соглашусь с ним – MohitC

ответ

0

В соответствии с комментариями xtranophilist и Амар, я использовал относительный путь следующим образом, и она работала:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
.... 

Затем в шаблоне директорий:

'DIRS': [BASE_DIR + '/mainproject/templates']