私はDjangoプロジェクトをやっていますが、というプロジェクトのプロジェクトがあります。このモデルでは、ファイルは/ media/files/YEAR/MONTH/DATE /にアップロードされるFileFieldを持っています。DjangoのファイルフィールドからファイルをURLやビューに追加するにはどうすればいいですか?
settings.py:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
models.py:
class Project(models.Model):
...
file_upload = models.FileField(upload_to='files/%Y/%m/%d', max_length=100, null=True, blank=True, default='')
テンプレート:/メディア/:
...
{% if project.file_upload %}
<tr>
<td>File</td>
<td><a href="{{ project.file_upload.url }}">{{ project.file_upload.name }} (Size: {{ project.file_upload.size|filesizeformat }})</a></td>
</tr>
{% endif %}
...
今ファイルへのリンクは次のようなものになるだろうファイル/ 2016/05/25/picture.pngまたは/media/files/2016/05 /25/report.pdf
現在、リンクをクリックすると、404ページが見つかりません。それは道がのurls.pyにないためですが、あなたは通常、URLにビューを追加するので、私はあなたが1つのファイルでそれをどうやって行うのか分かりません。必要ないだろう。
私はどのようにDjangoをURLで(そして、おそらくビューで)そのファイルを取得するのですか?リンクをクリックして、ブラウザで画像/ pdfを表示するか、単にファイルをダウンロードすることができます。
おかげで静的ファイルについて、Djangoに指示する必要がありません
(https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-static-files-during-developmentから)
、それが働きました私はあなたのコードをmedia_urlとmedia_rootに変更して使用しました。私はそれを行うより良い方法があると思った。しかし、私はこれがしなければならないと思う。しかし、これはDebug = Falseでどのように動作しますか? – cenh
debugがfalseの場合、メディアファイル、静的ファイル、および管理サイトファイルを提供する特別なサーバーが必要です。サーバーの例はlighttpdです。 – techydesigner