2016-10-11 1 views
0

Ich bin auf einem Windows-Rechner codieren, aber ich meine Produktion Website unter Linux.Capturing WindowsError in Vorlage

Beim Versuch, eine Seite auf meinem Entwicklungscomputer mit einer aus dem Produktionssystem kopierten Datenbank zu erreichen, erhalte ich beim Versuch, Dateien aufzulisten, Fehler, wenn diese Dateien nicht lokal existieren. Das ist wie erwartet, da ich gerade die DB kopiert habe und nicht die Dateien. Ich möchte nicht,/die Dateien benötigen, aber ich möchte nicht, folgende Fehler entweder:

WindowsError bei/126/documents/[Error 3] Das System kann den angegebenen Pfad nicht finden: U'c : \ mysite \ medien \ Dokumente \ 2016 \ 07 \ 26 \ myfile.docx‘

Statt die Fehler zu werfen, würde ich es vorziehen, dies in meiner Vorlage zu handhaben, so etwas wie:

{% if doc.data %}{{ doc.data.size | filesizeformat }}{% else %}File not found{% endif %} 

Das funktioniert jedoch nicht. doc.dataist vorhanden, da die DB einen Wert für diesen Speicherort weiß. Die Datei ist jedoch nicht auf der Festplatte verfügbar.

Jeder Weg, um dies richtig zu fangen, vorzugsweise in der Vorlage?

Mein Modell:

class Document(models.Model): 
    data = models.FileField(upload_to="documents/%Y/%m/%d") 

Antwort

0

Nicht die beste Antwort, aber eine Behelfslösung kann wie folgt implementiert werden in views.py (nicht in der Vorlage):

documents = Document.objects.all() 

if documents: 
    exclude_list = [] 
    for doc in documents: 
     try: 
      local_file = doc.data.file 
     except IOError: 
      exclude_list.append(doc.id) 
    documents = documents.exclude(id__in=exclude_list) 

context_dict['documents'] = documents 

diese Weise wird das Dokument nicht angezeigt in der Vorlage, wenn keine gültige lokale Datei gefunden wurde.