django-templates - 如何将用户个人资料头像图像渲染到 wagtail 模板中?
问题描述
我正在使用 Wagtail CMS 创建一个博客站点。每当发布新帖子时,我想显示作者头像图像。我正在尝试从该/admin/account/change_avatar/
位置渲染图像。我可以看到这里上传的图片在wagtailusers_userprofile -> col name: avatar
表格下面,但不知道如何在模板中渲染它。
解决方案
此图像不是典型的 Wagtail 图像(来自wagtailimages.Image
),它看起来像常规的models.ImageField
.
这是头像的 UserProfile 模型中的内容:
class UserProfile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='wagtail_userprofile'
)
avatar = models.ImageField(
verbose_name=_('profile picture'),
upload_to=upload_avatar_to,
blank=True,
)
因为这是一个常规图像字段,您可以通过.url
在模板中附加来获取 url。
这是一些示例模板代码:
{% if request.user.is_authenticated %}
{% if request.user.wagtail_userprofile.avatar %}
<img src="{{ request.user.wagtail_userprofile.avatar.url }}" alt="{{ request.user.get_full_name }}">
{% else %}
{# No image #}
{% endif %}
{% endif %}
上面的代码将检查用户是否在模板中进行了身份验证。如果你不需要它,放弃它。
然后是检查存在的if
语句request.user.wagtail_userprofile.avatar
。wagtail_userprofile
来自模型上的user
字段。UserProfile
它使用 a related_name
,所以我们在模板中使用它。
我还{{ request.user.get_full_name }}
为 alt 标签添加了一个,因为在这种情况下,图像 alt 可能应该是用户名,而不是文件名。
如果您需要高度或宽度,它们都可以通过{{ request.user.wagtail_userprofile.avatar.height }}
and获得{{ request.user.wagtail_userprofile.avatar.width }}
。
推荐阅读
- r - 闪亮的滑块未更新
- ruby-on-rails - 如何更新我的 Ruby on Rails 生产服务器
- python - Maya Python,重命名关节:多个对象匹配名称
- matplotlib - 堆叠色调直方图
- ios - UITableView 单元格在同一行
- ms-access - MS-Access:如何根据日期对 2 个不同表中的多个值求和,每行输出 1 个日期
- kubernetes - Traefik Ingress 中的重定向过多
- angular - 如何使用拦截器+路由保护自动刷新访问令牌?
- android - 光刻柱边界半径
- django - 如何在 django 中获取用户特定的帖子