django重定向登录

时间:2016-01-09 09:53:19

标签: django session login hyperlink

我在登录过程中遇到了麻烦

def zero_default_auth(request):
    print 'default auth............'
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)

    message = ''

    if user is not None:
        if user.is_active:
            login(request, user, )
            print "login success"

            message="success!!!"
        else:
            message = 'disable'
    else:
        message = 'error!'

    return render(request, 'index_zero.html')

这是我的登录视图。

模板导航栏

<li><a href="{% url 'intershell:zero_index' %}">Link to the zero</a></li>
<li><a href="{% url 'intershell:zero_join' %}">JOIN page</a></li>
<li><a href="{% url 'intershell:ajax_test' %}">ajax page</a></li>

单击链接后,登录数据不再存在。 如何将请求会话数据传递到另一个页面?

1 个答案:

答案 0 :(得分:0)

我不太了解Django的内幕,但当你这样做时:

login(request, user)

Django使用会话框架在会话中保存用户的ID。

  1. 如果您想知道用户是否在模板中进行了身份验证,请执行此操作 在你的html文件中执行此操作。

    {% if user.is_authenticated %}
        <!-- Show only to authenticated user -->
    {% endif %}
    

    只有在&#39; django.contrib.auth.context_processors.auth&#39;在您的settings.py文件中,否则用户变量将无法在模板中使用。在Django 1.8中声明上下文的方式已更改,因此请检查文档(https://docs.djangoproject.com/en/1.9/ref/settings/#template-context-processors

  2. 如果要查看视图,请使用以下命令: 来源(https://docs.djangoproject.com/en/1.9/topics/auth/default/#authentication-in-web-requests

    if request.user.is_authenticated():
        # logged user
    else:
        # not logged
    

    您还可以使用装饰器检查视图: 来源(https://docs.djangoproject.com/en/1.9/topics/auth/default/#the-login-required-decorator

    from django.contrib.auth.decorators import login_required
    
    @login_required(login_url='/accounts/login/')
    def my_view(request):
        ...
    
  3. 您还可以查看Url.py文件,在此处进行检查:How do I use the The login_required decorator in my URL?