python - Wagtail:是否可以自定义“wagtailadmin/home.html”?
问题描述
我有一个迷你应用程序,其中一种类型的用户只有对 wagtail 管理界面的查看访问/权限。这些用户可以检查我注册的模型modeladmin
。现在,如果这样的用户登录,他们会看到一个空白页面(除了菜单),即他们没有最后的活动等。有道理,因为他们没有管理员权限。但我想避免一个空页面并向他们显示一些自定义 html。
我知道wagtail_hooks.py
通过设置[inspect | index]_template_name
属性来注册自定义检查/索引视图模板,但这是在模型级别。
是否可以使用自定义模板替换wagtailadmin/home.html
?
编辑
文档显示了编辑管理区域某些部分的方法,例如品牌或欢迎信息。但不是主要内容。
编辑 2
以@gasmans 的回答为基础。如果您需要请求对象,您可以创建一个这样的面板
# wagtail_hooks.py
class WelcomePanel:
order = 50
def __init__(self, request):
self.request = request
self.logged_in_user = request.user.username
def render(self):
return render_to_string('wagtailadmin/home/my_message.html', {
'logged_in_user': self.logged_in_user,
}, request=self.request)
# simply pass the 'request' to the panel
@hooks.register('construct_homepage_panels')
def add_another_welcome_panel(request, panels):
panels.append(WelcomePanel(request))
解决方案
我得到了它。
创建一个模板文件dashboard/templates/wagtailadmin/home.html
并从 Wagtails 源模板中复制所有 html。然后添加您自己的内容。
{% extends "wagtailadmin/home.html" %}
{% load wagtailadmin_tags i18n %}
{% block titletag %}{% trans "Dashboard" %}{% endblock %}
{% block bodyclass %}homepage{% endblock %}
{% block content %}
<header class="merged nice-padding">
<div class="row row-flush">
<div class="col1">
<div class="avatar"><img src="{% avatar_url user %}" alt="" /></div>
</div>
<div class="col9">
<h1>{% block branding_welcome %}{% blocktrans %}Welcome to the {{ site_name }} Wagtail CMS{% endblocktrans %}{% endblock %}</h1>
<div class="user-name">{{ user.get_full_name|default:user.get_username }}</div>
</div>
</div>
</header>
{% if panels %}
{% for panel in panels %}
{{ panel.render }}
{% endfor %}
{% else %}
<p>{% trans "This is your dashboard on which helpful information about content you've created will be displayed." %}</p>
{% endif %}
<!-- Here comes the custom code -->
<h1>Custom content</h1>
{% endblock %}
推荐阅读
- r - 有什么作用。(点)在 ~replace_na(., 0) 中的意思
- postgresql - Postgres - 复制命令
- c - 需要 memset 全局字符串或全局结构中的字符串
- laravel - Laravel 和上传图片超过 2MB
- python - NumPy - 检查数组是否是另一个数组的视图的最快方法
- sql - 在 MSSQL 中使用 STRING_ESCAPE 时保持回车/换行
- c++ - 使用 QUdpSocket 从特定地址接收数据
- typescript - 打字稿条件为空
- reactjs - 如何删除自动完成上的清除按钮并仅显示文本
- javascript - Can't use jsPDF-AutoTable is not a function since v3.5.13 (jsPDF v2.1.1)