【发布时间】:2019-12-20 16:37:53
【问题描述】:
我已经尝试了一天来尝试将保存到媒体文件夹的图像显示在我的模板文件中,但无济于事。图像已上传到 media/images 文件夹,但我不知道如何显示它们。我无法弄清楚我做错了什么,因为我看到很多人使用这些方法并得到了结果。我在想也许我的 post 函数没有将正确的数据返回到模板? 我对 Django 和 html 非常陌生,所以请原谅我的错误。
这是我目前的设置:
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
models.py
from django.db import models
class Post(models.Model):
post = models.ImageField(upload_to="images")
forms.py
from django import forms
from imageDetection.models import Post
class HomeForm(forms.ModelForm):
class Meta:
model = Post
fields = ('post',)
views.py
class HomeView(TemplateView):
template_name = 'imageDetection/test.html'
@staticmethod
def detect(request):
return render(request, 'imageDetection/detection.html')
def get(self, request):
form = forms.HomeForm()
return render(request, self.template_name, {'form': form})
def post (self, request):
context = {}
if request.method == "POST":
form = forms.HomeForm(request.POST, request.FILES)
if form.is_valid():
image_form = models.Post()
image_form.post = form.cleaned_data['post']
image_form.save()
context['form'] = image_form
return render (request, 'imageDetection/detection.html', context)
else:
form = forms.HomeForm()
context['form'] = form
return render(request, self.template_name, context)
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('imageDetection.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模板/Detection.html
{% for post in form %}
{% if post.image %}
<img src="{{ MEDIA_URL }}{{ post.image.url }}" />
{% endif %}
{% endfor %}
谢谢你,任何帮助将不胜感激
【问题讨论】:
-
我们来解决这个问题。如果您通过 django 管理员添加新帖子(带图像),您能看到图像吗?当您从
HomeView添加新帖子时,您能在管理员中看到图片吗?
标签: python html django imagefield filefield