找不到页面 404 Django 媒体文件
Page not found 404 Django media files
我可以将文件上传到我在 settings.py
中设置的媒体文件夹 ('/peaceroot/www/media/'
),如下所示
MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'
但是我试图通过管理员访问上传的图片文件
http://localhost:8000/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg
然后我收到 404 错误。
文件存在于peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg
在您的项目中添加媒体 url 条目 url模式:
from django.conf.urls.static import static
from django.conf import settings
...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
MEDIA_ROOT 更好的方法是,
当您转移项目时,尝试使媒体路径动态化会很容易。
Settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\', '/')
MEDIA_URL = '/media/'
urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
看看这个
补充一下:如果其他答案不适合您,请尝试将静态 url 放在其他答案之前。像这样:
urlpatterns = static(...) + [...]
可能发生的情况是列表中的某些模式阻止请求到达静态处理程序。所以首先放置静态处理程序可以解决这个问题。为我工作。
在我的开发服务器中,我通过在settings.py
中注释掉这些行来修复它
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
在模板中通过锚标记创建 link 并在末尾添加 .url 到该文件对象
例如
{% for post in post %}
<a href="{{post.imagefilename.url}}" >
{% endfor %}
这是服务器错误。我假设你正在使用 Nginx。只需将其添加到位于 /static/
位置下的 Nginx 配置文件 (/etc/nginx/sites-available/example.com) 中
location /media/ {
root /home/user/myprojectdir;
}
在这里,user 应该是您创建的 username,myprojectdir 应该是您的 项目目录.
我可以将文件上传到我在 settings.py
中设置的媒体文件夹 ('/peaceroot/www/media/'
),如下所示
MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'
但是我试图通过管理员访问上传的图片文件
http://localhost:8000/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg
然后我收到 404 错误。
文件存在于peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg
在您的项目中添加媒体 url 条目 url模式:
from django.conf.urls.static import static
from django.conf import settings
...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
MEDIA_ROOT 更好的方法是,
当您转移项目时,尝试使媒体路径动态化会很容易。
Settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\', '/')
MEDIA_URL = '/media/'
urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
看看这个
补充一下:如果其他答案不适合您,请尝试将静态 url 放在其他答案之前。像这样:
urlpatterns = static(...) + [...]
可能发生的情况是列表中的某些模式阻止请求到达静态处理程序。所以首先放置静态处理程序可以解决这个问题。为我工作。
在我的开发服务器中,我通过在settings.py
中注释掉这些行来修复它STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
在模板中通过锚标记创建 link 并在末尾添加 .url 到该文件对象 例如
{% for post in post %}
<a href="{{post.imagefilename.url}}" >
{% endfor %}
这是服务器错误。我假设你正在使用 Nginx。只需将其添加到位于 /static/
位置下的 Nginx 配置文件 (/etc/nginx/sites-available/example.com) 中location /media/ {
root /home/user/myprojectdir;
}
在这里,user 应该是您创建的 username,myprojectdir 应该是您的 项目目录.