4

モデルの 1 つで Django admin を介してファイルを正常に保存できますが、後でファイルを開くことができません。これが私のモデルです:

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.

開発マシンでローカルに保存されたファイルを開くことができるようにするために、ここで欠けていることを誰かが指摘できますか?

4

2 に答える 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
于 2012-10-11T14:51:06.050 に答える
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です。

于 2012-10-11T16:59:53.083 に答える