0

comme le titre dit que j'ai un problème à l'aide d'un modèle dans une vue admin
ici est mon worktree
Django 1.11 modèle d'utilisation d'une application comme modèle d'administration

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) 

mais je je suis obtenir "Aucun fichier: file.html" erreur enter image description here

enter image description here

+0

Pouvez-vous publier le journal des erreurs. –

+0

Veuillez ne pas publier de messages d'erreur sous forme d'images. Copiez et collez le texte. – Alasdair

+0

Vous ne devriez pas avoir besoin d'inclure 'myapp/templates' dans' DIRS'. Il sera vérifié par le chargeur des répertoires de l'application tant que 'myapp' est dans' INSTALLED_APPS'. – Alasdair

Répondre

0

Essayez:

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

Je pense que le fichier est à l'intérieur et non à l'intérieur templates/admintemplates.

+0

c'est la même erreur – leila

0

pdfkit ne connaît pas votre paramètre TEMPLATES. Vous devez fournir le chemin relatif à votre répertoire de projet.

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

Toutefois, ceci traitera le fichier file.html comme un fichier html. S'il s'agit d'un modèle Django que vous souhaitez rendre, vous pouvez utiliser render_to_string et from_string.

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

ne fonctionne pas m obtenir "TemplateDoesNotExist" erreur – leila

+0

Ce n'est pas assez d'informations. Le message d'erreur complet devrait vous indiquer quels répertoires Django a essayés, ce qui devrait aider à déboguer le problème. Utiliser des noms composés comme 'myapp' et' file.html' rend l'aide plus difficile. – Alasdair

+0

j'ai fini par utiliser html dans le modelAdmin – leila