11

我有一个 Django 项目。为了设置我的媒体网址,我遵循了 django doc Django doc - 管理静态文件

例如,如果您的 MEDIA_URL 被定义为 /media/,您可以通过将以下代码段添加到您的 urls.py 中来做到这一点:

从 django.conf 导入设置 从 django.conf.urls.static 导入静态

urlpatterns = [ # ... URLconf 的其余部分在这里 ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我的settings.py

# ....
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_URL = 'http://127.0.0.1:8000'
# ...
MEDIA_URL_REL = '/media/'
MEDIA_URL = BASE_URL + MEDIA_URL_REL
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

我的urls.py

from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static

urlpatterns = [
 # ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我上传的文件在媒体根目录中找到,但是当我访问媒体 url [ http://127.0.0.1:8000/media/proof/img.pdf ] 时,它返回HTTP 404 NOT FOUND

4

1 回答 1

13

请不要使用硬编码的任何网址。这不仅仅是不好的做法。

BASE_URL = 'http://127.0.0.1:8000'

你不能那样写。

你的解决方案,

设置.py

MEDIA_URL = '/media/'

网址.py

urlpatterns = [ ....... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

希望这有效。

于 2017-02-13T09:35:32.547 回答