0

为题说,我在一个管理视图
这里使用模板有一个问题是我worktree
的Django 1.11模板使用

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) 

但我我得到 “没有这样的文件:file.html” 错误 enter image description here

enter image description here

+0

您可以发布错误日志。 –

+0

请不要将错误消息作为图像发布。复制并粘贴文本。 – Alasdair

+0

你不需要在'DIRS'中包含'myapp/templates'。只要'myapp'在'INSTALLED_APPS'中,它就会被app目录加载器检查。 – Alasdair

回答

0

尝试:

pdfkit.from_file('admin/file.html', 'out.pdf', paragraphs) 

我认为该文件是内部templates/admin,而不是内部templates

+0

这是相同的错误 – leila

0

pdfkit不知道您的TEMPLATES设置。您需要提供与您的项目目录相关的路径。

pdfkit.from_file('myapp/templates/admin/file.html', 'out.pdf', paragraphs) 

但是,这会将file.html视为html文件。如果它是要呈现的Django模板,则可以使用render_to_stringfrom_string

from django.template.loader import render_to_string 
html = render_to_string(request, 'admin/file.html', {...}) 
pdfkit.from_string(html, 'out.pdf') 
+0

不工作得到“TemplateDoesNotExist”错误 – leila

+0

这不是足够的信息。完整的错误信息应该告诉你Django试过哪些目录,这应该有助于调试问题。使用诸如'myapp'和'file.html'这样的组合名称使得它更难以提供帮助。 – Alasdair

+0

我结束了在modelAdmin中使用html – leila