Python Django:显示上载图像的问题

Python Django:显示上载图像的问题,python,django,image,Python,Django,Image,我正在通过Django建立一个照片博客,它有一个非常基本的结构: 1) 列表页:每篇文章都有封面图片 2) 对应的多个详细页:每页包含多个图片。 在列表页面,一切都很好,封面图片显示正确,但对于详细网页,我从django admin上传的图片不会显示,尽管它们可以在本地文件夹\媒体中找到。我在Chrome中查看了页面,我得到了这个:。我很困惑。 非常感谢你的时间和帮助 结构: lyv_dev #project name --settings.py --urls.py medi

我正在通过Django建立一个照片博客,它有一个非常基本的结构: 1) 列表页:每篇文章都有封面图片 2) 对应的多个详细页:每页包含多个图片。 在列表页面,一切都很好,封面图片显示正确,但对于详细网页,我从django admin上传的图片不会显示,尽管它们可以在本地文件夹\媒体中找到。我在Chrome中查看了页面,我得到了这个:。我很困惑。 非常感谢你的时间和帮助

结构:

lyv_dev #project name
    --settings.py
    --urls.py
media
    --upload1.jpg
    --upload2.jpg
    --upload3.jpg
    -- ...
project #app name
    -- templates
       --projects
         -- base.html
         -- list.html
         -- detail.html
    -- urls.py
    -- admin.py
    -- views.py
static
    -- css
       -- style.css
db.sqlite3
manage.py
models.py

from django.db import models
from django.urls import reverse

# models project
class Project(models.Model):
    title = models.CharField(max_length = 250)
    slug = models.SlugField(max_length = 250, unique_for_date = 'publish')
    text = models.TextField()
    year = models.IntegerField(default = 2020)
# couv: this is a cover picture
    couv = models.FileField(blank=True)
    height = models.IntegerField(default=0)
    weidth = models.IntegerField(default=0)
    
    class Meta:
        ordering = ('-publish', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('projects:project_detail', args=[self.slug])

# Images related with project
class ProjectImage(models.Model):
    project = models.ForeignKey(Project, on_delete = models.CASCADE, related_name='projectimages')
    images = models.FileField()

    def __str__(self):
        return self.project.title
管理员

from django.contrib import admin
from .models import Project, ProjectImage

class ProjectImageAdmin(admin.TabularInline):
    model = ProjectImage

@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'publish', 'status')
    list_filter = ('status', 'publish')
    search_fields = ('title', 'text')
    prepopulated_fields =  {'slug':('title',)}
    date_hierarchy = 'publish'
    ordering = ('status', 'publish')
    inlines = [ProjectImageAdmin]

    class Meta:
        model = Project
   
@admin.register(ProjectImage)
class PostImageAdmin(admin.ModelAdmin):
    pass
设置.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [str(BASE_DIR.joinpath('static'))]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
url.py(在django项目文件夹中)

url.py(在django应用程序文件夹中)

list.html

{% extends "projects/base.html" %}

{% block content %}
    {% for project in projects %}
        <p class="title"><a href="{{ project.get_absolute_url }}">{{project.title}}</a></p>
        <div><img src="{{ project.couv.url }}" alt=""></div>
    {% endfor %}
{% endblock %}
{%extends“projects/base.html”%}
{%block content%}
{项目%中的项目为%}

{%endfor%} {%endblock%}
detail.html

{% extends "projects/base.html" %}

{% block content %}
    <p>this is a detail page</p>
    {{ project.title }}
    {{ project.year }}
    <p>{{ project.width }} x {{ project.height }} mm </p>
    {% for image in images %}
    <div><img src="{{ images.url }}" alt=""></div>
    {% endfor %}
{% endblock %}
{%extends“projects/base.html”%}
{%block content%}
这是一个详细的页面

{{project.title} {{project.year} {{project.width}x{{project.height}}mm

{%用于图像中的图像%} {%endfor%} {%endblock%}
base.html

{% load static %}
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" href="{% static 'css/style.css' %}">
    </head>
    <body>
            <section class="content">
                {% block content %}
                {% endblock %}
            </section>
    </body>
</html>
{%load static%}
{%block content%}
{%endblock%}

我不知道
(未知)
从哪里来,但你需要写
{{image.url}
而不是
{{image.url}
。(一个字段名
images
,当它只有一个图像时,这是一个相当错误的名称。)哇!非常感谢!我按照你说的更改了url。成功了。但我不确定这个神奇的奇异“形象”是从哪里来的。当你说“只有一个图像”时,你的意思是“只有一个图像”吗?
image
是你在上面一行中自己写的循环。。。当我说它只是一个图像时,我指的是
文件字段
,它被命名为
图像
(如果它真的存储了图像,这应该是
图像字段
)。是的,我想我明白你的意思了。再次感谢你,我会被困好几个小时的。
{% extends "projects/base.html" %}

{% block content %}
    {% for project in projects %}
        <p class="title"><a href="{{ project.get_absolute_url }}">{{project.title}}</a></p>
        <div><img src="{{ project.couv.url }}" alt=""></div>
    {% endfor %}
{% endblock %}
{% extends "projects/base.html" %}

{% block content %}
    <p>this is a detail page</p>
    {{ project.title }}
    {{ project.year }}
    <p>{{ project.width }} x {{ project.height }} mm </p>
    {% for image in images %}
    <div><img src="{{ images.url }}" alt=""></div>
    {% endfor %}
{% endblock %}
{% load static %}
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" href="{% static 'css/style.css' %}">
    </head>
    <body>
            <section class="content">
                {% block content %}
                {% endblock %}
            </section>
    </body>
</html>