找不到Django表模板

时间:2015-05-08 08:01:12

标签: django django-templates django-tables2

在Django 1.7中,我无法提供自定义模板。相反,它只是默认为django_tables2/table.html

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等模板由模板查找器解析。

如果我放弃Meta类而是设置:

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不使用相同的查找方法吗?

3 个答案:

答案 0 :(得分:0)

在django 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?

答案 1 :(得分:0)

当我遇到Django 1.8的错误时,似乎没有人有解决方案,以备将来参考,这就是我解决它的方法:

我有一位经理将被称为默认经理。这个管理器方法get_queryset()被一个函数覆盖,用于对生成的对象进行排序并返回此列表。

虽然在网上的示例中经常会看到这种情况,但在文档中有类似的东西,你只能在那里返回一个查询集,而不是列表!因此,只需将该功能重命名为其他任何内容,您就可以返回列表。然后你只需拨打model.manager.anythingbutgetqueryset()就可以了。

答案 2 :(得分:-1)

将以下设置添加到settings.py文件中: -

TEMPLATE_DIRS = (
    "path_to_your_template_directory",
)

相应地修改路径