3

私は Django プロジェクトを行っており、Projectsというモデルがあります。このモデルには、ファイルが /media/files/YEAR/MONTH/DATE/ にアップロードされる FileField があります。

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 %}
...

ファイルへのリンクは次のようになります: /media/files/2016/05/25/picture.pngまたは/media/files/2016/05/25/report.pdf

現在、リンクをクリックするたびに 404 page not found が表示されます。もちろん、パスがurls.pyにないためですが、通常は url にビューを追加するため、単一のファイルでそれを行う方法がわかりません。必要ありません。

そのファイルを取得する方法をURL(およびおそらくビュー)でDjangoに伝えるにはどうすればよいですか? リンクをクリックして、ブラウザで画像/pdf を表示するか、単にファイルをダウンロードできるようにしたいと考えています。

4

1 に答える 1

3

Django は静的ファイルを提供しません。のときにこれらのファイルを強制的に配信するには、次のDEBUG=Trueコードを に追加しますurls.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

( https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-static-files-during-developmentから)

の静的ファイルについて Django に伝える必要はありません。views.py

于 2016-05-25T10:11:24.493 に答える