Seite 1 von 1

... und pdf anzeigen kann ich auch nicht

Verfasst: Samstag 16. März 2024, 18:21
von Pitwheazle
Die "handbuch.pdf" liegt auch in "staticfiles/medien". Folgendes habe ich probiert:

Code: Alles auswählen

def handbuch(req):
    with open('medien/handbuch.pdf', 'rb') as pdf:
        response = HttpResponse(pdf.read(), content_type='application/pdf')
        response['Content-Disposition'] = 'inline; filename="handbuch.pdf"'
        return response
(Den Code habe ich so im Internet gefunden und verwende ihn mal wieder ohne so recht zu wissen, was er macht.)
ergibt den Fehler

Code: Alles auswählen

[Errno 2] No such file or directory: 'medien/handbuch.pdf'
... wahrscheinlich ist nur der Pfad falsch? Wie man das jetzt im Template macht weiß ich (hoffentlich) - wie man das im code einträgt, weiß ich nicht.

Re: ... und pdf anzeigen kann ich auch nicht

Verfasst: Montag 19. August 2024, 07:15
von Sven_TKLOOP
Ich weiß nicht wie deine Ordnerstruktur aussieht, der Error sagt aber dass es deine Datei nicht gibt.
Du könntest zum Testen mal den absoluten Pfad nutzen, dann sollte zumindest dieser Fehler nicht mehr erscheinen.

Als einfache Lösung:

Code: Alles auswählen

def handbuch(req):
    # Absoluten Pfad
    file_path = '/voller/pfad/zu/deinem/projekt/staticfiles/medien/handbuch.pdf'
    
    try:
        with open(file_path, 'rb') as pdf:
            response = HttpResponse(pdf.read(), content_type='application/pdf')
            response['Content-Disposition'] = 'inline; filename="handbuch.pdf"'
            return response
    except FileNotFoundError:
        return HttpResponse("Die Datei wurde nicht gefunden.", status=404)

Re: ... und pdf anzeigen kann ich auch nicht

Verfasst: Montag 19. August 2024, 16:38
von noisefloor
Hallo,

ungetestet:

Code: Alles auswählen

from django.templatetags.static import static
...
path = static('medien/handbuch.pdf')
with open(path, 'rb') as pdf:
    ...
Gruß, noisefloor

Re: ... und pdf anzeigen kann ich auch nicht

Verfasst: Montag 19. August 2024, 18:17
von Pitwheazle
Hallo ihr Lieben,das ist sehr nett, dass ihr hier noch antwortet. Der Beitrag ist aber schon etwas älter. ich habe tatsächlich auch zwischenzeitlich dazugelernt (ein bisschen) - das funktioniert schon länger.
@ SvenTKLOOP hat wahrscheinlich recht und ich hatte den verkehrten Link. Das z.B geht einfach mit:

Code: Alles auswählen

<a href="{% static 'medien/lernbox.pdf' %}">Hier findet man das Handbuch für die Lernbox und für Bingo.</a>