2016-10-11 5 views
0

私はWindowsマシンでコーディングしていますが、私はLinux上で本番サイトを実行しています。テンプレートでWindowsErrorをキャプチャする

実動システムからコピーされたデータベースを使用して開発マシン上のページにアクセスしようとすると、これらのファイルがローカルに存在しない場合にファイルをリストする際にエラーが発生します。 これは予想通りです。ファイルをコピーしたのではなく、ファイルをコピーしたからです。私は/ファイルを必要としたくないが、私は次のエラーをしたくない、次のいずれか

WindowsErrorで/ 126 /文書/ [エラー3]指定 パスが見つかりません。 u'C :\個人用サイト\メディア\ドキュメント2016 \ 07 \ 26 \ myfile.docx」

代わりのエラーを投げ\、私は私のテンプレートでこれを処理することを好むだろう、何かのように:

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

しかし、それは動作しません。 doc.dataが存在します.DBはこのファイルの場所の値を認識しているためです。しかし、ファイルはディスク上で利用できません。

これを正しくキャッチする方法はありますか?

マイモデル:

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

答えて

0

ない最良の答えが、views.py内(ないテンプレートに)次のような回避策を実装することができます。

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 

文書が表示されていない。この方法有効なローカルファイルが見つからない場合はテンプレート内にあります。

関連する問題