Python 上传后如何通过URL访问媒体

Python 上传后如何通过URL访问媒体,python,django,Python,Django,我正在尝试制作一个博客应用程序,每个帖子都有一个特色图片。当我从管理仪表板上传图像时,我可以在我的文件夹中看到图像。但是,当我试图访问图像的url或从源代码显示图像时,它什么也没有显示 这是我的密码: 型号.py class Post(models.Model): PRIVACY=( ('0', 'Public'), ('1', 'Private') ) title = models.CharField(max_length=250)

我正在尝试制作一个博客应用程序,每个帖子都有一个特色图片。当我从管理仪表板上传图像时,我可以在我的文件夹中看到图像。但是,当我试图访问图像的url或从源代码显示图像时,它什么也没有显示

这是我的密码:

型号.py

class Post(models.Model):
    PRIVACY=(
        ('0', 'Public'),
        ('1', 'Private')
    )
    title = models.CharField(max_length=250)
    image = models.ImageField(upload_to="gallery/")
    description = models.TextField()
    status = models.CharField(max_length=8, choices=PRIVACY, default='0')
    tags = TaggableManager()
    published = models.DateField(auto_now_add=True)
    slug = models.SlugField(max_length=58,blank=True,) 


    def save(self, *args, **kwargs):
        slug_save(self) # call slug_save, listed below
        super(Post, self).save(*args, **kwargs)
    def __str__(self):
        return self.title
    def get_absolute_url(self):
        return reverse('src:post_detail',args=[self.slug])
    def get_image(self):
        return self.image.url
视图.py

def home(request):
    posts = Post.objects.order_by('-published')
    template = 'home.html'
    context = {'posts': posts}
    return render(request, template, context)

def post_detail(request,post):
    post = get_object_or_404(Post, slug=post)
    return render(request,'detail.html',{'post': post})
app_name = 'src'
urlpatterns = [
    path('', views.home, name='home'),
    path('<slug:post>/',views.post_detail,name='post_detail'),
    ]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
else:
    urlpatterns += staticfiles_urlpatterns()
url.py

def home(request):
    posts = Post.objects.order_by('-published')
    template = 'home.html'
    context = {'posts': posts}
    return render(request, template, context)

def post_detail(request,post):
    post = get_object_or_404(Post, slug=post)
    return render(request,'detail.html',{'post': post})
app_name = 'src'
urlpatterns = [
    path('', views.home, name='home'),
    path('<slug:post>/',views.post_detail,name='post_detail'),
    ]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
else:
    urlpatterns += staticfiles_urlpatterns()
这在my settings.py中:

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

在你的setting.py中,你有媒体根目录和媒体URL吗。请检查,如果您没有这样的添加: MEDIA\u ROOT=os.path.join(基本目录,'MEDIA') 媒体URL='/MEDIA/'


##将文件存储在根文件夹中的media文件夹中的位置看起来拼写错误。改为
MEDIA\u URL='/MEDIA/'

也可以试着推杆

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在主URL.py中,而不是在应用程序URL中


您的静态根目录和静态URL不应该相同。查看更多信息

您的媒体根目录和媒体URL设置为什么?仍然面临相同的问题:'(您的图像是否保存到
http://127.0.0.1:8000/media/gallery/icon.png
?是的。图像正在保存。您是否像我的回答中那样将静态URL模式添加到根URL?请在这些更改后尝试上载新图像