在开发中找到但在生产pythonanywhere中找不到的媒体文件

问题描述 投票:0回答:0

我有一个使用django编写的基本文件上传系统。 它可以正常工作,并且文件已正确上传到正确的路径。 但是,当使用Google Drive Viewer时,它无法预览。 经过一番挖掘后,我发现问题一定是找不到URL,实际上不是。

换句话说, mysite.pythonanywhere.com/media/files/myfile.pdf返回404错误。
但是, http:127.0.0.1:8000/media/files/myfile.pdf可以正常工作(当然在本地服务器上)。 因此,这是在生产环境中提供文件的问题。

我的媒体网址已正确映射到媒体目录,如pythonanywhere帮助页面所示。

URL = /media/  
DIRECTORY = /home/name/mysite/media

文件保存在文件系统上的正确位置。 我的静态文件可以正常运行,并且设置与媒体文件几乎相同。

我已经尝试解决问题两天了,但是还没有找到解决方案。 有任何想法吗?

在我的settings.py中:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL ='/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

可能值得注意的是,当我有意将错误路径放置到静态文件时,404错误不包含django搜索过的URL列表。 它确实在404错误消息中显示了媒体。 因此,服务器直接提供了静态文件,而没有将请求传递到wsgi层,但是由于某种原因,它不能以相同的方式处理媒体URL? 顺便说一下,我正在使用debug = False,但仅将其设置为True可以帮助诊断问题。 以下是消息:

    Request Method: GET
    Request URL:http://infodump.pythonanywhere.com/static/randfile.txt
    'randfile.txt' could not be found

    Request Method: GET
    Request URL:    http://infodump.pythonanywhere.com/media/randfile.txt
    Using the URLconf defined in InfoDump.urls, Django tried these URL patterns,in this order:
    1.^admin/
    2.^streamer/
    3.^ ^$ [name='home_page']
    4.^ ^signUpPage/$ [name='sign_up']
    The current URL, media/randfile.txt, didn't match any of these.
python django media production pythonanywhere
© www.soinside.com 2019 - 2024. All rights reserved.