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