在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不使用相同的查找方法吗?
答案 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",
)
相应地修改路径