假设这是@login_required(login_url='/account/required_login/')
之后的网址:
http://ngoksy.com/accounts/login_required/?next=/article/
查看login_require:
def required_login(request):
return render(request, 'required_login.html')
我尝试添加' next',就像here一样。但它没有帮助。:
def required_login(request):
c = {'next' : request.GET.get('next', '/')}
return render(request, 'login_required.html', c)
我有不同的登录模板和匿名用户的另一个模板,由@login_required
重定向。
required_login.html:
<h2>Login required! You must login to view the content.</h2>
<form action="/accounts/auth/" method="post">
{%csrf_token%}
<label for="username">Username:</label>
<input type="text" name="username" id="username" value="">
<label for="password">Password:</label>
<input type="password" name="password" id="password" value="">
<input type="submit" value="LOGIN">
</form>
我想在成功登录next
后传递login_required()
变量,然后进入文章页面。我该怎么做?
答案 0 :(得分:1)
我最终得到了这个。
required_login
的观点:
def required_login(request):
c = {'next' : request.GET.get('next', '/')}
return render(request, 'required_login.html', c)
在模板中(注意next
的隐藏输入):
<form action="/accounts/auth/" method="post">
{%csrf_token%}
<label for="username">Username:</label>
<input type="text" name="username" id="username" value="">
<label for="password">Password:</label>
<input type="password" name="password" id="password" value="">
<input type="hidden" name="next" value="{{ next }}"/>
<input type="submit" value="LOGIN">
</form>
然后在auth_view
的观点中:
def auth_view(request):
username = request.POST.get('username','')
password = request.POST.get('password','')
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user)
if request.POST.get('next') != '':
return HttpResponseRedirect(request.POST.get('next'))
else:
return HttpResponseRedirect('/')
else:
return HttpResponseRedirect('/accounts/invalid_login')
我希望这能帮助像我这样的任何其他菜鸟! :)
答案 1 :(得分:0)