无法更改模板中“登录-注销”链接的视图。仅停留在“登录” **。如果已经登录,登录视图不会更改为注销

时间:2019-06-14 11:27:36

标签: django django-templates django-login django-logging

我正在构建一个应用程序来做一些工作。工作需要用户登录。除了将登录更改为退出之外,其他一切工作正常。

所以这是我在view.py

中用于 user_login user_logout 的代码
    from django.shortcuts import render
    from purpose_finder import forms
    from purpose_finder.functions import find_purpose
    from purpose_finder.forms import UserForm,UserProfileInfoForm
    from django.urls import reverse
    from django.contrib.auth.decorators import login_required
    from django.http import HttpResponse,HttpResponseRedirect
    from django.contrib.auth import login,logout,authenticate

    @login_required
    def user_logout(request):
        logout(request)

    return HttpResponseRedirect(reverse('index'))

这是为 user_login

    def user_login(request):
        if request.method=="POST":
          username=request.POST.get('username') #get field from HTML code
          password=request.POST.get('password')

          user=authenticate(request, username=username,password=password)

          if user:
              if user.is_active:
                  login(request,user)
                  return HttpResponseRedirect(reverse('index'))
              else:
                  return HttpResponse("Account Deactivated")

          else:
              return HttpResponse("Login Failed!!")

    else:
          return render(request,'purpose_finder/login.html',{})

这是 base.html 的代码,大多数表单都使用 Bootstrap 顶部的静态导航栏来继承该代码

    <nav class="navbar navbar-default navbar-static-top">
        <div class="container">
            <ul class="nav navbar-nav">
                <li><a class="navbar-brand" href="{% url 'index' %} " 
                    >Home</a></li>
                <li><a class="navbar-link" href="{% url 'admin:index' %}" 
                     >Admin</a></li>
                <li><a class="navbar-link" href="{% url 
                    'purpose_finder:user_register' %}" >Register</a></li>
                {% if user.is_auhenticated %}
                      <li><a class="navbar-link"  href="{% url 
                       'user_logout' %}">Logout</a></li>
                 {% else %}
                      <li><a class="navbar-link" href="{% url 
                        'purpose_finder:user_login' %}" >Login</a></li>

                       {% endif %}
                     </ul>
                  </div>
               </nav>

如果我同时在导航栏中同时提供两个按钮,则可以登录和注销,但是仅当与 {%如果user.is_authenticated%} 一起使用时,我才停留在登录名上。事实是,这个** user.is_authenticated **不会显示任何结果。当我在shell中打印值时,它显示 True ,但在注入时在 base.html 中没有任何结果。任何帮助将不胜感激。

0 个答案:

没有答案