post 详细信息页面上未显示 Django Wagtail 图片
Django Wagtail image not showing on post detail page
我正在尝试学习 wagtail 教程,但在尝试实现图像时遇到了问题。我上传并添加到博客 post 的图片显示在 post 列表页面中,但未显示在 post 详细信息页面中。谁能告诉我我现在缺少什么以及是否需要分享任何其他信息。谢谢!
我正在使用 wagtail V2.1,这是我当前的代码:
blog/models.py post 详细信息页面 class:
class PostPage(Page):
body = RichTextField(blank=True)
date = models.DateTimeField(verbose_name='Post date',default=datetime.datetime.today)
categories = ParentalManyToManyField('blog.BlogCategory',blank=True)
tags = ClusterTaggableManager(through='blog.BlogPageTag',blank=True)
header_image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
content_panels = Page.content_panels + [
ImageChooserPanel('header_image'),
FieldPanel('body', classname="full"),
FieldPanel('categories',widget=forms.CheckboxSelectMultiple),
FieldPanel('tags'),
]
settings_panels = Page.settings_panels + [
FieldPanel('date'),
]
@property
def blog_page(self):
return self.get_parent().specific
def get_context(self,request,*args,**kwargs):
context = super(PostPage,self).get_context(request,*args,**kwargs)
context['blog_page'] = self.blog_page
return context
blog/templates/blog/post_page.html 用于 post 详情页面:此处未显示图像
{% extends "blog/base.html" %}
{% load wagtailcore_tags wagtailimages_tags wagtailroutablepage_tags %}
{% block content %}
<!-- Post Title -->
<h1>{{ page.title }}</h1>
<hr>
<!-- Post Image -->
{% if post.header_image %}
{% image post.header_image original as header_image %}
<img src="{{ header_image.url }}" class="img-responsive" ></img>
{% endif %}
<hr>
<!-- Post Body -->
{{ page.body|richtext }}
<hr>
<p><a href="{{ page.get_parent.url }}">Return to blog</a></p>
{% endblock %}
blog/templates/blog/blog_page.html post 列表页面:图片显示在这里
{% extends "blog/base.html" %}
{% load static wagtailcore_tags wagtailimages_tags blogapp_tags %}
{% block content %}
<h1>{{ blog_page.title }}</h1>
<div class="intro">{{ blog_page.description }}</div>
{% for post in posts %}
<!-- Post Image -->
{% if post.header_image %}
{% image post.header_image original as header_image %}
<img src="{{ header_image.url }}" class="img-responsive" ></img>
{% endif %}
<!-- Post Title -->
<h2>
<a href="{% post_date_url post blog_page %}">{{ post.title }}</a>
</h2>
{% endfor %}
{% endblock %}
明白了,我在 html 页面中使用 post.Image 而不是 page.Image :D
我正在尝试学习 wagtail 教程,但在尝试实现图像时遇到了问题。我上传并添加到博客 post 的图片显示在 post 列表页面中,但未显示在 post 详细信息页面中。谁能告诉我我现在缺少什么以及是否需要分享任何其他信息。谢谢!
我正在使用 wagtail V2.1,这是我当前的代码:
blog/models.py post 详细信息页面 class:
class PostPage(Page):
body = RichTextField(blank=True)
date = models.DateTimeField(verbose_name='Post date',default=datetime.datetime.today)
categories = ParentalManyToManyField('blog.BlogCategory',blank=True)
tags = ClusterTaggableManager(through='blog.BlogPageTag',blank=True)
header_image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
content_panels = Page.content_panels + [
ImageChooserPanel('header_image'),
FieldPanel('body', classname="full"),
FieldPanel('categories',widget=forms.CheckboxSelectMultiple),
FieldPanel('tags'),
]
settings_panels = Page.settings_panels + [
FieldPanel('date'),
]
@property
def blog_page(self):
return self.get_parent().specific
def get_context(self,request,*args,**kwargs):
context = super(PostPage,self).get_context(request,*args,**kwargs)
context['blog_page'] = self.blog_page
return context
blog/templates/blog/post_page.html 用于 post 详情页面:此处未显示图像
{% extends "blog/base.html" %}
{% load wagtailcore_tags wagtailimages_tags wagtailroutablepage_tags %}
{% block content %}
<!-- Post Title -->
<h1>{{ page.title }}</h1>
<hr>
<!-- Post Image -->
{% if post.header_image %}
{% image post.header_image original as header_image %}
<img src="{{ header_image.url }}" class="img-responsive" ></img>
{% endif %}
<hr>
<!-- Post Body -->
{{ page.body|richtext }}
<hr>
<p><a href="{{ page.get_parent.url }}">Return to blog</a></p>
{% endblock %}
blog/templates/blog/blog_page.html post 列表页面:图片显示在这里
{% extends "blog/base.html" %}
{% load static wagtailcore_tags wagtailimages_tags blogapp_tags %}
{% block content %}
<h1>{{ blog_page.title }}</h1>
<div class="intro">{{ blog_page.description }}</div>
{% for post in posts %}
<!-- Post Image -->
{% if post.header_image %}
{% image post.header_image original as header_image %}
<img src="{{ header_image.url }}" class="img-responsive" ></img>
{% endif %}
<!-- Post Title -->
<h2>
<a href="{% post_date_url post blog_page %}">{{ post.title }}</a>
</h2>
{% endfor %}
{% endblock %}
明白了,我在 html 页面中使用 post.Image 而不是 page.Image :D