无法在Django Admin中打开保存的文件

无法在Django Admin中打开保存的文件,django,file,http-status-code-404,admin,Django,File,Http Status Code 404,Admin,我可以通过Django admin在我的一个模型中成功地保存文件,但无法在以后打开该文件。这是我的模型: class Answer (models.Model): answer = models.CharField(max_length=1000) attach_file = models.FileField(upload_to='Attachments', blank=True) 我没有接触设置文件,据我所知,它应该使用默认值: MEDIA_ROOT = '' MEDIA_U

我可以通过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.

有人能指出我在这里缺少什么,以便能够在我的开发人员机器上本地打开保存的文件吗?

尝试如下设置您的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

关于@Sawwy对@RicardoCarmo回答的评论。我发布了一个关于格式的答案

以下是我在主url配置中使用的内容:

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
如果getattr(设置为'DEBUG',False)或getattr(设置为'DEBUG_MEDIA',False):
media_url=getattr(设置,'media_url','/media/')。lstrip('/'))
urlpatterns=模式(“”,
url(r'^%s(?P.*)$'%(媒体url,),'django.views.static.service'{
“document\u root”:settings.MEDIA\u root
}),
)+URL模式

请注意,在生产环境中,您的媒体文件应由web服务器提供,这些请求不应到达Django。这就是为什么如果DEBUG或DEBUG_MEDIA

更进一步,它会被限定为
,并且似乎我在URL.py文件中缺少了与媒体相关的conf:“使用MyProject.URL中定义的URLconf,Django尝试了这些URL模式,顺序如下:…”当前URL,MEDIA/Attachments/outlook.png,与这些模式都不匹配。“目前我的URL.py中没有r'^media/”或类似的行。谢谢@RicardoCarmo和@dokkaebi!两份答复都包含解决方案所需的信息。不幸的是,我不能把它们都标出来作为答案。。。我知道我需要正确地了解生产端环境,但我目前正在进行第一次迭代,只想让它在我的本地机器上工作。另外,作为python/django的新手,我在阅读代码示例以了解管理文件为何现在能像现在这样工作时得到了很好的启发:)