Web请求中的认证:https://yiyibooks.cn/xx/django_182/topics/auth/default.html
Django使用会话和中间件来拦截request 对象到认证系统中。
它们在每个请求上提供一个request.user属性,表示当前的用户。如果当前的用户没有登入,该属性将设置成AnonymousUser的一个实例,否则它将是User的实例。
视图函数views.py中无需修改因为
# Django会给request对象添加一个属性request.user
# 如果用户未登录->user是AnonymousUser类的一个实例对象
# 如果用户登录->user是User类的一个实例对象
# request.user.is_authenticated()
# 除了你给模板文件传递的模板变量以外,django框架会把request.user也传递给模板文件
templates/base.html中
{# 欢迎信息#} {% block header_con %} <div class="header_con"> <div class="header"> <div class="welcome fl">欢迎来到天天生鲜!</div> <div class="fr"> {% if user.is_authenticated %} <div class="login_btn fl"> 欢迎您:<em>{{ user.username }}</em> {# user对象是django自动渲染到模板上 #} </div> {% else %} <div class="login_btn fl"> <a href="/user/login">登录</a> <span>|</span> <a href="/user/register">注册</a> </div> {% endif %} <div class="user_link fl"> <span>|</span> <a href="user_center_info.html">用户中心</a> <span>|</span> <a href="cart.html">我的购物车</a> <span>|</span> <a href="user_center_order.html">我的订单</a> </div> </div> </div> </div> {% endblock header_con %}