2015-08-21 3 views
2

Я новичок в Django и столкнулся с ошибкой, которая действительно меня озадачила. Я просто собираю базовый сайт и использую учебник как часть руководства, но у меня возникла проблема с шаблонами. Я создал каталог шаблонов в том же каталоге, что и manage.py, создал каталог администратора в шаблонах и скопировал/вставил base_site.html в каталог администратора в соответствии с руководством. Затем я изменил несколько заголовков, сохранил все, перезапустил сервер и ... ничего. Нет ошибок, но никаких изменений. Как будто я ничего не сделал. Я пробовал различные исправления, предлагаемые здесь, но ни один из них не работает. Это похоже на то, что каталог шаблонов не найден, поэтому приложение использует значение по умолчанию. Вот основы, которые я прямо сейчас:Django 1.8 BASE_DIR template issue

Структура каталогов: Project> App, шаблоны> Администрирование> base_site.html, manage.py и т.д.

В моей settings.py:

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

и

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [os.path.join(BASE_DIR, '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', 
     ], 
    }, 
}, 

]

и в base_site.html:

<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('THIS IS WHAT I CHANGED') }}</a></h1> 

Я действительно надеюсь, что кто-то может указать мне в правильном направлении.

+0

Является ли файл настройки в папке App? – Akisame

+0

Settings.py находится в папке приложения, а не папке проекта, да.Папка шаблонов находится в папке проекта. –

+0

Btw, ваш фрагмент работает для меня. Со структурой по умолчанию проекта (только что обновленным template_dirs). http://pastebin.com/VvErAizj – Akisame

ответ

0

Эта линия:

{{ site_header|default:_('THIS IS WHAT I CHANGED') }} 

оценивает site_header и если найден False, будет выводиться по умолчанию. site_header - это переменная, определенная в классе AdminSite. Нет причин для описания site_headerFalse, поэтому будет отображаться site_header, а не текст, который вы изменили.

См Default filter описание:

DEFAULT

Если значение вычисляется в значение False, использует данное значение по умолчанию. В противном случае используется значение .

Например:

{{значение | по умолчанию: "ничего"}} Если значение "" (пустая строка), то выход не будет ничего.

Здесь: https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#default

Есть способы изменить site_header, вы можете создать пользовательскую модель, основанную на AdminClass, а затем определить site_header для этого нового экземпляра. Это означает также определение нового URL-адреса.

Или вы можете установить site_header:

django.contrib.admin.AdminSite.site_header = "Новый заголовок"

+0

Я вытащил это прямо из официального учебника Django ... https://docs.djangoproject.com/en/1.8/intro/tutorial02/ –

Смежные вопросы