/ /保存されたファイルをDjango Adminで開くことはできません - django、ファイル、http-status-code-404、admin

Django Adminで保存したファイルを開くことができません - django、ファイル、http-status-code-404、admin

私は正常に私のモデルのいずれかのDjangoの管理者経由でファイルを保存することができますが、ファイルaftewardsを開くことはできません。ここに私のモデルです:

class Answer (models.Model):
answer = models.CharField(max_length=1000)
attach_file = models.FileField(upload_to="Attachments", blank=True)

私は設定ファイルに触れていないと私の理解には、デフォルト値を使用する必要があります:

MEDIA_ROOT = ""
MEDIA_URL = ""
STATIC_ROOT = ""

私はadmin.pyにモデルを登録し、ファイルをブラウズして保存することができました。そのファイルを開こうとすると、次のようになります。

Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/businessui/answer/1/Attachments/outlook.png/
answer object with primary key u"1/Attachments/outlook.png" does not exist.

私はここで私のdevマシン上にローカルに保存されたファイルを開くことができるようにするために紛失しているものを指摘することができますか?

回答:

回答№1は2

@ RicardoCarmoの答えに対する@Sawwyのコメントを参照してください。私は書式設定の答えとして投稿します。

ここで私は私のメインのURL confで何を使用しています:

if getattr(settings, "DEBUG", False) or getattr(settings, "DEBUG_MEDIA", False):
media_url = getattr(settings, "MEDIA_URL", "/media/").lstrip("/")
urlpatterns = patterns("",
url(r"^%s(?P<path>.*)$" % (media_url,), "django.views.static.serve", {
"document_root": settings.MEDIA_ROOT
}),
) + urlpatterns

実稼働環境では、メディアファイルはWebサーバーによって提供され、その要求はDjangoに届くべきではないことに注意してください。だからこそ、 if DEBUG or DEBUG_MEDIA.


回答№2のための5

settings.pyを次のように設定してみてください:

import os
PROJECT_ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))

MEDIA_ROOT = os.path.join(PROJECT_ROOT_PATH, "media/")
MEDIA_URL = "/media/"

だから、あなたのファイルを取得しようとする:

http://127.0.0.1:8000/media/Attachments/outlook.png