gpt4 book ai didi

django - 无法解析 ?next= 值来自 http ://login/? next=/my_page/使用 request.GET.get ('next' ,'' )

转载 作者:行者123 更新时间:2023-12-04 21:43:14 34 4
gpt4 key购买 nike

我有一个自定义登录网址/ View /模板。我对页面使用 @login_required 装饰器(让
称为 my_page) 需要登录。试图访问

my_site.com/my_page 

正确调用
my_site.com/login/?next=/my_page/ 

但我的观点无法解析出 的值?next=/my_page/my 而是总是重定向到我的默认值 /qa/在我看来:
def login_with_email(request):
error = ''
if request.method == 'POST':
if not request.POST.get('email', ''):
error = 'Please enter your email and password'
if not request.POST.get('password', ''):
error = 'Please enter your email and password'
if not error:
email = request.POST['email']
password = request.POST['password']

try:
user = User.objects.get(email=email)
user = authenticate(username=user.username, password=password)
if user is not None:
if user.is_active:
login(request, user)

# ***
next_page = request.GET.get('next', '/qa/')
response = HttpResponseRedirect(next_page)
# ***

response.set_cookie('login_email', email, max_age=14*24*60*60)
return response
except User.DoesNotExist:
error = 'Invalid email and password combination'

网址.py:
url(r'^login/$', views.login_with_email), 

最佳答案

根据我下面的评论,我意识到我必须从 url 中获取 next 的值。之前 我的 POST 处理(感谢 @Anentropic 在灯泡上闪烁)。所以现在我获取 next 的值,将它传递给我的模板,我将它存储在一个隐藏字段中,最后在重定向需要时使用 request.POST.get 访问它:

修改后的观点:

def login_with_email(request):
error = ''
next = request.GET.get('next', '/qa/profile/private/')
if request.method == 'POST':
...
if user.is_active:
login(request, user)
next = request.POST.get('next', '/qa/profile/private/')
...
return render(request, 'qa/login_with_email.html', {'error': error, 'login_email': login_email, 'next': next,})

在我的模板中:
<form method="post" action="." autocomplete="on">{% csrf_token %} 
<p><input type="hidden" name="next" value="{{ next }}"/></p>
...

注:这个答案最初是由问题的提出者发布的。我刚搬到这里。

关于django - 无法解析 ?next= 值来自 http ://login/? next=/my_page/使用 request.GET.get ('next' ,'' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052740/

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