2015-05-08 11 views
2

В Django 1.7 я не могу предоставить собственный шаблон. Вместо этого он просто по умолчанию в django_tables2/table.htmlШаблон таблицы Django не найден

from django_tables2 import Table as BaseTable 
class Table(BaseTable): 
    class Meta: 
     template = 'portal/base_table.html' 

И моя структура папок:

apps/portal/ 
├── __init__.py 
├── tables.py 
├── templates 
│ └── portal 
│  ├── base.html 
│  ├── base_portal.html 
│  ├── base_table.html 
│  └── home.html 

В приведенном выше, шаблоны, такие как portal/base.html устраняемых с помощью шаблона искатели.

Если я отказаться от мета-класс и вместо того, чтобы установить:

from django_tables2 import Table as BaseTable 
class Table(BaseTable): 
    template = 'portal/base_table.html' 

вместо этого я получаю ошибку TemplateDoesNotExist, как это, кажется, пытается решить /data/www/apps/portal/templates/No template names provided среди других.

Для дальнейшей поддержки, я думаю, что шаблон должен быть решение:

>>> render_to_response('portal/base_table.html') 
<django.http.response.HttpResponse object at 0x7fa940c74690> 

>>> render_to_response('portal/base_table.html2') 
    ... 
    raise TemplateDoesNotExist(name) 
TemplateDoesNotExist: portal/base_table.html2 

Моего settings.py файл содержит:

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
path = lambda *a: os.path.join(BASE_DIR, *a) 
TEMPLATE_DIRS = (
    path('templates'), 
) 

Это работает для всех остальных шаблонов таких, как для представлений. Не использует ли django-tables2 тот же метод поиска?

+0

Несвязанный, но мне очень нравится эта функция 'path()', которую вы взломали. – rnevius

+0

@rnevius, спасибо, довольно уверен, что я украл его откуда-то, хотя: D – DanH

ответ

-1

Добавить следующие настройки в файл settings.py: -

TEMPLATE_DIRS = (
    "path_to_your_template_directory", 
) 

Редактировать путь соответственно

+0

У меня уже есть набор TEMPLATE_DIRS, и я бы подумал: «render_to_response (« portal/base_table.html »)« Успешное должно указывать как таковое? Однако я обновлю OP. – DanH

0

В Джанго tables2, для использования пользовательского шаблона для обеспечения пользовательского шаблона, вы должны сделать его в шаблонах как это:

<div class=""> 
    {% load render_table from django_tables2 %} 
    {% render_table table 'portal/base_table.html'%} 
</div> 

Вы можете проверить этот ответ в качестве справки: Is it possible to apply a template tag to a <td> when using django-tables2?

0

Как я столкнулся с этой ошибкой с Django 1.8, и никто, кажется, не имеет решения, для дальнейшего использования я решил это:

У меня был менеджер, который будет называться менеджером по умолчанию. Этот метод управления get_queryset() был перезаписан функцией для сортировки результирующих объектов и возврата этого списка.

Оказывается, хотя это часто встречается в примерах в сети и что-то подобное находится внутри документации, вы можете возвращать там только запрос, а не список! Поэтому просто переименуйте эту функцию на что-нибудь еще, и вам разрешено возвращать списки. Тогда вы просто звоните model.manager.anythingbutgetqueryset(), и все в порядке.

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