将按钮添加到Django管理索引页面

时间:2019-01-05 22:48:30

标签: python django django-admin url-routing

我想在Django管理员中添加一个站点范围内的操作,称为“同步SQL-KB”。 Site-wide button "Synchronize SQL-KB"

为此,我从Django复制了本地templates/admin/index.html文件,并对其进行了如下修改:

...
{% if app_list %}
    <table>
        <tr>
            <td>
                <a href="sync-sql-kb/">Synchronize SQL-KB</a>
            </td>
        </tr>
    </table>
    {% for app in app_list %}
    ...

如您所见,我希望链接按钮触发对/admin/sync-sql-kb/的请求。

如何立即注册此URL?在哪里以及如何实现处理程序功能?

请注意,我认为这种情况与其他SO问题不同,因为该操作是在整个网站范围内进行的,而不是绑定到特定的Django模型。

1 个答案:

答案 0 :(得分:1)

您可以编写自己的视图并仅在管理URL旁边注册它们;

urlpatterns = [
    path('admin/sync-sql-kb/', myapp.urls),
    path('admin/', admin.site.urls),
]

那你就可以做; <a href="/admin/sync-sql-kb/">Synchronize SQL-KB</a>

根据您的需要,确保您的视图对作为职员或超级用户的用户进行了正确的检查。另外请考虑您可以命名您的URL,并照常使用reverse

我也建议您将链接也添加到管理模板的userlinks块中。阅读此以获得更多信息; https://cheat.readthedocs.io/en/latest/django/admin.html#customize-top-right-corner-of-admin-pages