S P*_*son 7 python django django-rest-framework
我使用 Django (DRF) 管理物理储物柜。用户填写表格,通过发送到其电子邮件的链接进行身份验证,通过储物柜上显示的 PIN 码进行授权。
我的观点应该处理三种情况:
如果用户成功进行身份验证和授权,则储物柜上显示的 PIN 码将替换为通用消息,并且储物柜将打开。(已经实施)
如果用户未能在 3 分钟内授权,储物柜密码将被替换为通用消息。
如果用户 Foo 发出新的授权请求,而用户 Bar 的授权尚未完成,则将请求放入队列中,等待情况 1. 或情况 2. 完成。
我怎么能够:
按原样查看,以防有用:
if request.method == 'POST':
form = ConfirmationForm(request.POST)
if form.is_valid():
if pin == form.cleaned_data['pin']:
open_bay(jwt_token=jwt[1], pin=pin)
display_generic_message(jwt_token=jwt[1])
lock_bay(jwt_token=jwt[1], pin=pin)
return render(request, 'static/pages/request-success.html')
else:
pass
else:
form = ConfirmationForm()
return render(request, 'static/pages/confirmation.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)
小智 0
在您保存授权的模型中,您需要添加 date_created 或 date_requested 字段,并且必须是日期时间字段。然后,对于每个请求,您可以检查您保存的 date_requested 是否已经过去 3 分钟。您还需要一个 is_authorized 字段来检查您的用户是否获得授权。我们假设您是从您发送的电子邮件中获取用户的。
user = get_object_or_404(User,email=kwargs['email'])
if user.date_request + timedelta(minutes=3) > datetime.datetime.now():
"do your authorzing stuff ..."
else:
return HttpResponse("you need to wait 3 minutes to request again")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2122 次 |
| 最近记录: |