我有一个使用django编写的基本文件上传系统。它工作正常,文件正确上传到正确的路径。但是,当使用谷歌驱动器查看器时,它会出现预览不可用。经过一番挖掘,我发现问题必定是找不到网址,但事实并非如此。
换句话说,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层,但由于某种原因,它不是以同样的方式处理媒体网址?顺便说一句,我正在使用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.