gpt4 book ai didi

python - 使 View 只能通过重定向访问,并且只能从 Django 中的一个 View 访问

转载 作者:太空宇宙 更新时间:2023-11-04 10:08:11 24 4
gpt4 key购买 nike

如何使 View 只能通过重定向 访问,并且只能从特定的 View 访问?

urls.py:

#Assuming namespace = 'myApp'

url(r'^redarekt/$', views.redarekt, name='redarekt'),
url(r'^reciva/$', views.reciva, name='reciva'),

views.py:

@login_required()
def redarekt(request):
if request.user.is_authenticated() and request.user.is_active:
return HttpResponseRedirect(reverse('myApp:reciva'))


@login_required()
def reciva(request):
if request.user.is_authenticated() and request.user.is_active:
#CHECK IF IT IS A REDIRECT AND COMING FROM redarekt
execute(request)
raise Http404
raise Http404

如何使 reciva 只能通过 redirect 和仅从 redarekt 访问?

最佳答案

您可以使用 request.session

@login_required()
def redarekt(request):
if request.user.is_authenticated() and request.user.is_active:
request.session['pp_redarekt'] = True
return HttpResponseRedirect(reverse('myApp:reciva'))


@login_required()
def reciva(request):
if request.user.is_authenticated() and request.user.is_active:
if 'pp_redarekt' in request.session:
execute(request)
del request.session['pp_redarekt']
raise Http404
raise Http404

'pp_redarekt' 代表上一页'redarekt'

所以基本上,在重定向到 reciva(request) View 之前,您正在设置添加 session key ,这表示上一页是 redarekt。当您在 reciva View 中处理您的请求时,您将删除该 key ,因此用户将无法输入 reciva 两次或更多次。

但为此,您需要设置 session 。 Guide and docs

关于python - 使 View 只能通过重定向访问,并且只能从 Django 中的一个 View 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39818402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com