我们的 Django 应用程序中有一些功能可以显示一个链接来刷新来 self 们的版本控制系统的一些信息。这只是一个链接,当他们点击该 URL 时,将执行转到版本控制、获取信息、检查数据库和更新数据库的操作。
最近我们有一位用户为一项 Assets 点击了“刷新”按钮两次。这导致 URL 被命中两次,因此操作执行了两次,最终在我们的数据库中创建了一个重复的条目。
我们需要做一些事情来消除用户点击该按钮两次的可能性。我们应该从链接移动到 javascript 按钮吗?我们是否应该在第一次点击发生时立即在 request.session 中设置一些标志,然后在完成时取消设置,并在执行刷新时始终检查该标志?这只是两个看似可行的想法,但我真的不知道。
最佳答案
你应该使用 POST
请求并在它之后重定向,真的。
此外,为了防止双重提交,您可以采用类似以下问题的解决方案:Does a library to prevent duplicate form submissions exist for django? .您可以在 request.session
中存储一个键 refreshing_vcs
并在您的 View 中检查它的值。如果数据已经在刷新,那么您可以将用户重定向到另一个页面并告诉您稍等。
完全另一种方法是设置一个 django-celery
任务(或简单地使用 cron)以定期自动执行更新,但我不知道它是否符合您的要求。
关于python - Django:有没有办法防止一个 View 被同时调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499096/