正如标题所说我在管理员视图中使用模板时遇到问题 这是我的工作树
project
|-- project/
|-- myapp/
|-- templates/
|-- admin/
|-- file.html
settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'myapp/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',
],
},
},
]
ModelAdmin.py
class ModelAdmin(admin.ModelAdmin):
actions = ['export']
def export(self,request, queryset):
paragraphs = ['first paragraph', 'second paragraph', 'third paragraph']
pdfkit.from_file('file.html', 'out.pdf', paragraphs)
admin.site.register(Model, ModelAdmin)
答案 0 :(得分:0)
pdfkit
不了解您的TEMPLATES
设置。您需要提供相对于项目目录的路径。
pdfkit.from_file('myapp/templates/admin/file.html', 'out.pdf', paragraphs)
但是,这会将file.html视为html文件。如果它是您要呈现的Django模板,则可以使用render_to_string
和from_string
。
from django.template.loader import render_to_string
html = render_to_string(request, 'admin/file.html', {...})
pdfkit.from_string(html, 'out.pdf')