扩展 Django 管理员删除确认页面

Posted

技术标签:

【中文标题】扩展 Django 管理员删除确认页面【英文标题】:Extending Django admin delete confirmation page 【发布时间】:2021-09-25 19:39:48 【问题描述】:

我想知道是否可以为特定应用程序和模型扩展 Django Admin 的删除确认页面。我想要使​​用户能够像 django 管理界面那样删除所有记录的功能。可以在我的应用中扩展 delete Confirmation.html

【问题讨论】:

【参考方案1】:

您可以扩展 Django 管理员删除确认页面。要扩展它,在您的模板目录中,创建一个名为 admin 的目录并创建一个名为 delete_selected_confirmation.html 的 html 文件,其内容如下 (the default admin delete confirmation page source)

% extends "admin/base_site.html" %
% load i18n l10n admin_urls static %

% block extrahead %
     block.super 
     media 
    <script src="% static 'admin/js/cancel.js' %" async></script>
% endblock %

% block bodyclass % block.super  app- opts.app_label  model- opts.model_name  delete-confirmation delete-selected-confirmation% endblock %

% block breadcrumbs %
<div class="breadcrumbs">
<a href="% url 'admin:index' %">% translate 'Home' %</a>
&rsaquo; <a href="% url 'admin:app_list' app_label=opts.app_label %"> opts.app_config.verbose_name </a>
&rsaquo; <a href="% url opts|admin_urlname:'changelist' %"> opts.verbose_name_plural|capfirst </a>
&rsaquo; % translate 'Delete multiple objects' %
</div>
% endblock %

% block content %
% if perms_lacking %
    <p>% blocktranslate %Deleting the selected  objects_name  would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:% endblocktranslate %</p>
    <ul>
    % for obj in perms_lacking %
        <li> obj </li>
    % endfor %
    </ul>
% elif protected %
    <p>% blocktranslate %Deleting the selected  objects_name  would require deleting the following protected related objects:% endblocktranslate %</p>
    <ul>
    % for obj in protected %
        <li> obj </li>
    % endfor %
    </ul>
% else %
    <p>% blocktranslate %Are you sure you want to delete the selected  objects_name ? All of the following objects and their related items will be deleted:% endblocktranslate %</p>
    % include "admin/includes/object_delete_summary.html" %
    <h2>% translate "Objects" %</h2>
    % for deletable_object in deletable_objects %
        <ul> deletable_object|unordered_list </ul>
    % endfor %
    <form method="post">% csrf_token %
    <div>
    % for obj in queryset %
    <input type="hidden" name=" action_checkbox_name " value=" obj.pk|unlocalize ">
    % endfor %
    <input type="hidden" name="action" value="delete_selected">
    <input type="hidden" name="post" value="yes">
    <input type="submit" value="% translate 'Yes, I’m sure' %">
    <a href="#" class="button cancel-link">% translate "No, take me back" %</a>
    </div>
    </form>
% endif %
% endblock %

现在目录和文件结构应该如下所示。现在您可以根据需要扩展上述模板。

├── templates
    └──  admin
        └── delete_selected_confirmation.html

【讨论】:

以上是关于扩展 Django 管理员删除确认页面的主要内容,如果未能解决你的问题,请参考以下文章

确认后未执行 Django 管理操作

加速 Django 管理员删除页面

如何扩展 Django 用户模型来管理权限

Django框架之admin管理后台

获取所有相关的 Django 模型对象

rbac05 权限角色管理 (modelform/反向生成url/共用删除,编辑页面/共用确认,取消页面)