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