用户登录有两种情况:
@login_required
装饰器)使用@login_required
装饰器,如果我没有在LOGIN_REDIRECT_URL
中指定settings.py
,如果用户由于会话期满而注销并重新登录,它将被重定向返回到当前页面,如下所示:
http://127.0.0.1:8000/?next=/my-current-url-page/
这是一个非常好的功能,我想坚持下去,但是如果我在Scenario 1
中,它将被重定向到:
http://127.0.0.1:8000/accounts/profile/
我只想在用户从主页登录时指定重定向URL。如何设置用户从主页登录的例外?
urls.py
# this renders the home page
re_path('^$', auth_views.login, {'template_name': 'login.html'}, name='login'),
# this renders the other pages
path('well_list/', decorator_include(login_required, [
re_path(....),
re_path(....),
]))
仅供参考,decorator_include
是一个代码段,可让您使用include()
为网址格式应用修饰符。
答案 0 :(得分:0)
您可以这样做(适用于创建模板和更改变量):
view.py
def login_user(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
login(request, user)
return HttpResponseRedirect(settings.LOGIN_DOCUMENT_REDIRECT_URL)
return render(request, 'foobar.html')
url.py
url('login', views.login_user)
您现在可以为模板编写表单