首页 > 解决方案 > 如何允许用户在 Django 中每 30 分钟仅访问一次视图?

问题描述

我正在构建一个允许用户更新网页的应用程序,但我想限制任何用户每 20-30 分钟进行一次更新。我可以简单地将这个逻辑添加到视图定义中吗?

@login_required
def update_options(request):
    ...
    # logic to determine how much time passed since the user visited
    ...
    return render(request, 'main/update-options.html')

标签: pythondjangodjango-viewsuser-permissionstime-limiting

解决方案


我会做这样的事情。我没有测试它,但它应该是关闭的。基本上使用 request.session 来跟踪上次更新。

from datetime import datetime

def update_options(request):
    if request.session['last_access'] is None or (datetime.now() - request.session['last_access']).days * 24 * 60 > 30:
        'YOUR CODE HERE'
        request.session['last_access'] = datetime.now()
    else:
        'TOO MANY TRIES'
    return render(request, 'main/update-options.html')

推荐阅读