初学者建立个人博客。得到了一个带有ImageField的简单模型。不管我尝试什么,Django都不会提供图片。
根据开发工具中的控制台输出,它正在错误的文件夹中查找图像。我不知道该如何解决。我尝试设置MEDIA_URL,MEDIA_ROOT并添加urlpattern,就像建议here和here
我已经通过管理面板上传了图片,它的位置是media / images / stockmarket.jpg。但是由于某些原因,服务器正在/blog/images/stockmarket.jpg
查找图像项目名称:“ wikb”,“博客”是一个应用程序: project_file_system
models.py
from django.db import models
class Post(models.Model):
title = models.CharField('Post Title', max_length=200)
preview = models.CharField('Post Preview', max_length=400)
thumbnail = models.ImageField('Post Picture', upload_to='images/', blank=True)
view.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post
def home(request):
all_posts = Post.objects.all()
hero_post = all_posts[0]
context = {'hero_post': hero_post, 'all_posts': all_posts}
return render(request, 'blog/home.html', context=context)
HTML
<div class="hero">
<a href="#" class="hero__link" style="background-image: url({{hero_post.thumbnail}})">
<article class="hero__article">
<h2 class="hero__heading">{{hero_post.title}}</h2>
<p class="hero__preview">{{hero_post.preview}}</p>
</article>
</a>
</div>
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = "/media/"
全局urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('blog/', include('blog.urls')),
path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这是我的第一个Django项目,请像我5岁时解释一下。
更新:在模板中引用对象时,我忘记添加.url。
答案 0 :(得分:3)
在模板中,您需要使用.url
来获取FieldFile
(FileField
或ImageField
所包含的文件)的真实URL:>
<a href="#" class="hero__link" style="background-image: url({{ hero_post.thumbnail.url }})">