来自 HTML Django 1.10 中模型的图像

Posted

技术标签:

【中文标题】来自 HTML Django 1.10 中模型的图像【英文标题】:Images from Model in HTML Django 1.10 【发布时间】:2017-06-23 13:55:25 【问题描述】:

我是 Django (1.10) 的新手,请见谅。我正在尝试从我的模型衣服中可视化图像。尝试创建某种小型网店进行培训。

我的模特:

from __future__ import unicode_literals

from django.db import models
from django.utils import timezone

class Clothes(models.Model):
    user = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    description = models.TextField()
    image = models.ImageField(upload_to = '/pic_folder/', default = '/pic_folder/None/no-img.jpg')
    type_clothes = models.CharField(max_length=100)
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    class Meta:
        verbose_name = "Kleding"
        verbose_name_plural = "Kleding"

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

Views.py

from django.shortcuts import render
from django.utils import timezone
from .models import Clothes

def clothes_overview(request):
    clothes= Clothes.objects.filter(published_date__lte=timezone.now())
    return render(request, 'Clothes/clothes_overview.html', 'clothes' : clothes)

clothes_overview.html

% load staticfiles %
<html>
    <head>
        <title>WebShop</title>
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
        <link rel="stylesheet" href="% static 'css/clothes.css' %">
    </head>
    <body>
        <div>
            <h1><a href="/">Clothing WebShop</a></h1>
        </div>

        % for cloth in clothes %
            <div>
                <p>published:  cloth.published_date </p>
                <h1><a href=""> cloth.title </a></h1>
                // DISPLAY IMAGE HERE
                <p> cloth.text|linebreaksbr </p>
            </div>
        % endfor %
    </body>
</html>

我尝试了一个通过搜索 Stack 找到的选项:

                <img src=" cloth.image.url ">

这对其他人有所帮助,但仍然让我的页面显示损坏的图像。我使用谷歌浏览器查看了源代码,发现路径是(特定于 hoodie.jpg):

<img src="pic_folder/hoodie.jpg">

然后我尝试了另一种方法:

                <img src="% static 'pic_folder/image.jpg' %">

这确实在我的浏览器中多次显示 image.jpg! 我找到的路径是:

<img src="/static/pic_folder/image.jpg">

不知何故,我需要将这两种方法结合起来,以便将图像动态加载到网页中。有人可以帮助我吗?

【问题讨论】:

【参考方案1】:

Djangos static 模板标签,允许你传入变量,所以按照你的建议 - 结合你的方法

<img src="% static cloth.image.url %">

【讨论】:

谢谢!我在正确的语法上苦苦挣扎? @AnnaJeanine - 不用担心,你已经接近了! 对于 Django 1.10 更喜欢% load static %(而不是staticfiles)。见***.com/a/34424007/621690

以上是关于来自 HTML Django 1.10 中模型的图像的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.10中文文档-第一个应用Part2-模型和管理站点

Django 1.10 中文文档------3.2.1 模型Models

Django 1.10文档中文版Part1

[python][django 1.10中文文档]

Django 1.10 从 CSV 文件记录手动提交到数据库

Django 1.10:base_site.html 覆盖不起作用