You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中点击后禁用提交按钮

Django变更表单防止重复提交:提交后禁用按钮的简便方法

当然有,给你几种简便实用的方法,从简单到可靠分情况选择:

  • 前端JS即时禁用(最简便)
    直接在模板里给表单绑定提交事件,提交时立刻禁用按钮并修改提示文本,用户马上就能看到反馈,避免重复点击:

    <form method="post" id="change-form">
      {% csrf_token %}
      {{ form.as_p }}
      <button type="submit" id="submit-btn">保存变更</button>
    </form>
    
    <script>
      const form = document.getElementById('change-form');
      const submitBtn = document.getElementById('submit-btn');
      
      form.addEventListener('submit', () => {
        submitBtn.disabled = true;
        submitBtn.textContent = '提交中...';
      });
    </script>
    这种方法优点是零后端改动,即时生效;缺点是如果有人通过浏览器控制台解锁按钮,还是可能重复提交,适合普通场景。
    
    
  • 前端+后端token验证(更可靠)
    要彻底防止重复提交,得前端禁用加后端验证配合。可以给表单加一个一次性UUID token,提交后后端标记该token已使用:

    1. 先在表单类里添加token字段和验证逻辑:
    from django import forms
    import uuid
    from django.core.cache import cache
    
    class YourChangeForm(forms.ModelForm):
        submit_token = forms.CharField(widget=forms.HiddenInput(), required=False)
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.fields['submit_token'].initial = str(uuid.uuid4())
    
        def clean_submit_token(self):
            token = self.cleaned_data.get('submit_token')
            if cache.get(f'submit_token_{token}'):
                raise forms.ValidationError('请勿重复提交表单')
            cache.set(f'submit_token_{token}', 'used', timeout=300)  # 5分钟后过期
            return token
    
    1. 模板里依然保留前端禁用的JS逻辑,后端会自动验证token,拦截重复提交。
  • 配合视图缓存控制
    另外可以给变更视图加上@never_cache装饰器,防止浏览器缓存表单页面,避免用户后退后再次提交:

    from django.views.decorators.cache import never_cache
    from django.views.generic.edit import UpdateView
    
    @never_cache
    class YourChangeView(UpdateView):
        model = YourModel
        form_class = YourChangeForm
        template_name = 'your_template.html'
        success_url = '/success/'
    

内容的提问来源于stack exchange,提问作者mohammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:12:14