django媒体网址正确但未显示图片

时间:2020-07-14 14:43:01

标签: python django

所以我做了一个测试Django项目来解决我在我的网站中遇到的问题是该图像不会显示,但是当我在控制台中看到该url时,我设置的正确的MEDIA_URL(底部的图片)我知道也许问题出在我的urlpatterns中,但是我似乎找不到这是我的代码。

urls.py

    from django.urls import path
    from . import views
    from django.conf import settings
    from django.conf.urls.static import static

    urlpatterns = [
        path("",views.index,name="index"),
        path('callback/', views.callback, name='callback')
    ] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

对不起,这是我编辑的模型

    class transaksi_user(models.Model):
        line_name = models.CharField(max_length=100)
        img_transaksi = models.ImageField(upload_to='image_transaksi')
        read_by_admin = models.BooleanField(default=False)

        def __str__(self):
            return self.line_name

views.py

    def index(request):
        user1 = transaksi_user.objects.all()
        return render(request,"messanger.html",{"user":user1})

模板

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
        {% for users in user%}
        <h1>{{users.line_name}}</h1>
        <img src="{{users.img_transaksi.url}}">
        {% endfor %}
    </body>
    </html>

settings.py

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR,"staticfiles")
    ]
    STATIC_ROOT = os.path.join(BASE_DIR,"assets")
    MEDIA_URL ='/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR,'media')

当我在django管理页面中添加新图像时,它会工作并找到媒体文件并将其保存在其中,但是当我尝试通过单击django admin中的url来查看图像时,会显示出这样的错误

django admin new image

error image

在我的控制台中,它也是正确的媒体网址

console image

1 个答案:

答案 0 :(得分:0)

在Django中,您无法在管理门户中单击URL来查看文件。这些URL被截断,并不代表项目文件夹中的确切文件位置。因此,它只有/ media / image_transaksi ...而不是C:/ Project文件夹/ Static / media / image_transaksi(或类似文件)。

但是,您可以使用以下方式在模板中呈现这些文件:

{{ image_transaksi.url }}

Django确保这将找到整个路径,并且图像将按预期呈现。