首页 > 解决方案 > Django 管理员去抖动

问题描述

我正在使用尽可能少的自定义模板和 javascript 代码的Python Django Admin 。

有没有办法消除点击特定按钮(或表单提交)?

例如,如果用户在保存按钮上单击两次(在短时间内),则应该只进行一次调用。

标签: jquerydjangodjango-admindebouncedebouncing

解决方案


如果您不想要任何自定义模板或 javascript,一种方法是对任何视图进行速率限制,该按钮将向其发送请求。例如,“保存”按钮将向change_view视图发送请求,因此您可以在此设置速率限制器。像这样的东西应该工作:

from ratelimit.decorators import ratelimit

class YourAdminClass(admin.ModelAdmin):

    @ratelimit(key='ip', rate='1/s')
    def change_view(elf, request, object_id, form_url='', extra_context=None):
        # anything else you want to do
        return super().change_view(request, object_id, form_url, extra_context)

对于任何给定的 IP 地址,这将允许每秒最多 1 个。请注意,您将需要安装Django Ratelimit。另外,请注意我从未亲自使用过它,它只是我搜索时出现的第一个库。

然而...

为什么需要这个特殊功能。Django 管理界面不应该被用作面向客户的站点。唯一使用它的人应该是您公司/您为/自己创建网站的公司内的人。IMO,它应该只被其他开发人员真正使用,但也许并非在所有情况下都是如此,也许在您的情况下并非如此。考虑到所有这些,问问自己这是否是您真正需要的功能。


推荐阅读