【问题标题】:Why cannot I see the image file in django?为什么我在 django 中看不到图像文件?
【发布时间】:2019-11-07 20:49:19
【问题描述】:

我尝试加载图像文件,但没有成功。我通过管理员上传了图像文件。感谢您的帮助!

这是我的代码

urls.py

path('main/archive/<int:video_id>/', views.loadphoto, name='loadphoto'),

在views.py中

def loadphoto(request, video_id):
     target_img=get_object_or_404(Record, pk=video_id)
     context={'target_img':target_img.picture}

在models.py中

class Record(models.Model):
    record_text = models.CharField(max_length=50)
    pub_date = models.DateTimeField('date published')
    picture=models.ImageField(blank=True)

    def __str__(self):
        return self.record_text

在 img.html 中

<img src="target_img">

<a href="{%url 'main'%}">Main</a>

【问题讨论】:

    标签: django django-models django-views django-media


    【解决方案1】:

    首先你需要将你的媒体目录加入到你的应用中

    你可以这样做:

    首先你需要在你的Setting.py

    中添加这个
    MEDIA_URL = '/media/'
    
    MEDIA_ROOT = os.path.join(BASEDIR,'your folder directory')
    
    #for example app/media or something
    

    那么你需要创建媒体网址,方法如下:

    然后你需要添加你的urls.py

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        path('main/archive/<int:video_id>/', views.loadphoto,name='loadphoto'),
    
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    那么你需要在你的Html File

    中添加这个
    <img src='{{ target_img.url }}'>
    

    您可以在此处查看更多详细信息:

    https://docs.djangoproject.com/en/2.2/ref/models/fields/#django.db.models.fields.files.FieldFile.url

    【讨论】:

      【解决方案2】:

      ImageField 派生自 FileField。为了在您的模板中显示图像,您应该提供其 url,请参阅https://docs.djangoproject.com/en/2.2/ref/models/fields/#django.db.models.fields.files.FieldFile.url

      源属性应改为如下填充:

      <img src="target_img.url">
      

      【讨论】:

        猜你喜欢
        • 2020-05-22
        • 1970-01-01
        • 1970-01-01
        • 2018-03-05
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 2011-06-25
        相关资源
        最近更新 更多