You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中FileField上传图片无法显示(404错误)求助

Fixing Django Media File 404 Error (Uploaded Images Not Displaying)

Looks like you're hitting a common snag with Django's media file serving—let's break down the fixes step by step:

1. Fix the Critical Import in urls.py

Your biggest issue is an incorrect import for the static helper function. You're pulling it from the template context processors module, but it should come from Django's URL configuration utilities. Update your urls.py like this:

from django.contrib import admin
from django.urls import path
from django.contrib.auth import views as auth_views
from dress import settings
from fostania import views
# Correct import for serving media files
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', auth_views.login, name='login'),
    path('home/',views.home, name='home'),
    path('add/',views.add, name="add"),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

2. Ensure DEBUG Mode is Enabled

The static() helper only works when DEBUG = True in your settings.py (this is designed for development only—you'll use a proper web server like Nginx for media files in production). Double-check this line in settings.py:

DEBUG = True

3. Verify Your MEDIA_ROOT Path & File Location

Make sure your uploaded image is actually stored where MEDIA_ROOT points. You can confirm this via the Django shell:

  1. Run python manage.py shell in your terminal
  2. Paste these commands to check:
import os
from django.conf import settings
# Print the full path Django is looking for media files
print(settings.MEDIA_ROOT)
# Check if your specific image exists at the expected path
print(os.path.exists(os.path.join(settings.MEDIA_ROOT, 'documents/2018/05/18/test_dress3.jpg')))

If the second check returns False, double-check where your files are being saved—your MEDIA_ROOT might be pointing to the wrong directory.

4. Confirm BASE_DIR is Correct

Ensure BASE_DIR in settings.py is properly defined to point to your project's root folder. The standard setup is:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

This guarantees os.path.join(BASE_DIR, 'static/media') resolves to the exact folder where your uploaded images are stored.

After making these changes, restart your Django development server and refresh the page—your images should load correctly now.

内容的提问来源于stack exchange,提问作者Ahmed Wagdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:28:28