轻量级bug管理平台——首页项目
通过中间件判断用户是否登录成功,与用户名密码登录通过中间件进行校验的过程一样。
每次请求进来,都会走中间件,中间件给request.tracer赋值,tracer为自己自定义的项目名。中间件可以应用在视图函数或者页面当中。
中间件代码:
class AuthMiddleware(MiddlewareMixin): def process_request(self, request): """如果用户已登录,则request中赋值""" # request.tracer = Tracer() user_id = request.session.get('user_id', 0) # 如果用户登录,则session中有user_id。如果没有,则返回0,0在数据库中无法查询。, user_object = models.UserInfo.objects.filter(id=user_id).first() # 去数据库查询有没有这个对象 request.tracer = user_object # request.tracer指的是这个对象。 # 若request.tracer返回一个None,则代表用户没登录

<ul class="nav navbar-nav navbar-right"> {% if request.tracer %} <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ request.tracer.username }} <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">管理中心</a></li> <li role="separator" class="divider"></li> <li><a href="{% url 'logout' %}"> 退 出</a></li> </ul> </li> {% else %} <li><a href="{% url 'login' %}">登 录</a></li> <li><a href="{% url 'register' %}">注 册</a></li> {% endif %}

视图函数:
def logout(request): request.session.flush() # 清空session数据 return redirect('index') # 找到index的URL
浙公网安备 33010602011771号