我想在Django管理员中添加一个站点范围内的操作,称为“同步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模型。
答案 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