繁体   English   中英

从模型在 django 模板中显示图像

[英]Display an image in django template from model

我有一个 django 模型可以在 django 模型中存储一些图像,但是当我尝试显示此图像时,它显示损坏的图像标志而不是图像。

模型.py

class Uploaded_pod(models.Model):
    document = models.FileField(upload_to='pods/')
    lr_connected = models.ForeignKey(DeliveredDocket, on_delete=models.CASCADE, related_name='delivered_pod')

视图.py

#upload POD
def pod_upload (request, pk):
    lr_object = get_object_or_404(DeliveredDocket, id=pk)
    print(lr_object)
    if request.method == 'POST':
        form = UploadPODform(request.POST, request.FILES)

        if form.is_valid():
            obj = form.save(commit=False)
            obj.lr_connected = lr_object
            obj.save()
            messages.success(request, 'The POD was Uploaded with success!')
            return redirect('employee:delivered_docket_table')

    else:
        form = UploadPODform()
        form.lr_connected = lr_object

    return render(request, 'packsapp/employee/model_form_upload.html', {'form': form})

#show pod
def list(request,pk):
    print("function called with pk ",pk)

    images = Uploaded_pod.objects.filter(lr_connected = pk)
    return render(request, "packsapp/employee/list.html", {'images': images})

HTML

{% extends 'base.html' %}

{% block content %}

{% for i in images %}
    <img src="{{ i.image.url }}" width="500px"/>
{% endfor %}

{% endblock %}

设置.py

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

我做错了什么? 请帮忙!

我假设您使用文档名称存储图像,所以称之为

{% for i in images %}
    <img src="{{ i.document.url }}" width="500px"/>
{% endfor %}

还要在您的设置中添加以下内容

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")

MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media_cdn")

并在主网址中

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM