Django-登录-仅当从首页登录时才重定向到特定URL

时间:2018-09-13 05:31:46

标签: django django-login

用户登录有两种情况:

  1. 从主页登录
  2. 会话已过期,并且用户已注销。用户被迫重新登录以停留在当前页面中(使用了@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()为网址格式应用修饰符。

1 个答案:

答案 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)

您现在可以为模板编写表单