jquery - Django 管理员去抖动
问题描述
我正在使用尽可能少的自定义模板和 javascript 代码的Python Django Admin 。
有没有办法消除点击特定按钮(或表单提交)?
例如,如果用户在保存按钮上单击两次(在短时间内),则应该只进行一次调用。
解决方案
如果您不想要任何自定义模板或 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,它应该只被其他开发人员真正使用,但也许并非在所有情况下都是如此,也许在您的情况下并非如此。考虑到所有这些,问问自己这是否是您真正需要的功能。
推荐阅读
- c - 如何在纯 c 中创建图形画布以显示图形图形,而无需任何库和平台独立
- oracle - SL 无代
- reactjs - 无法配置现有的 React-Native 项目
- javascript - 如何在firebase实时数据库中限制用户每15分钟发帖一次
- android - 鉴于我已添加依赖项,无法解析 firebasedatabase
- angular - 无法将类属性添加到 Angular 7 中的 DOM 元素
- sql-server - 将计数值分组
- reactjs - 用ant-design在react js中提交后清除表单输入字段值
- python - 在 Python 中从列表中检索浮点值
- amazon-web-services - 如何在 Amazon Linux 2 AMI 中安装 GUI(桌面)