新闻项目——右上角处理

第一步:右上角处理——后台逻辑

正常来说右上角应该要么是登录与注册要么就是已经登录的用户,但现在右上角的登录注册用户什么的都在一起。

 现在就需要把他们区分开来。

因为右上角是首页的内容,所以我们去到info.modules.index里修改

还是先写出逻辑再将代码补全。

@index_blue.route("/")
def index():
    """"
    首页渲染
    1.处理右上角的逻辑
        1.1获取session值(id)
        1.2根据id查询到指定用户
        1.3将查询到的用户信息返回给前台进行渲染
    """
    # 首页渲染
    # 1.处理右上角的逻辑
    # 1.1获取session值(id)
    user_id = session.get("id")
    # 1.2根据id查询到指定用户
    user = None
    try:
        user = User.query.filter_by(id=user_id).first()
        # user = User.query.filter_by(User.id == user_id).first()
    except Exception as e:
        current_app.logger.error(e)
    # 1.3将查询到的用户信息返回给前台进行渲染
    context = {
        "user":user
    }
    return render_template("news/index.html", context=context)

 第二步:右上角处理——前台逻辑

 前台的代码我们需要去到info.templates.index.html修改

 这里就是需要修改的地方

            {% if context.user %}
                    <div class="user_login fr">
                        <img src="{% if context.user.avatar_url %}{{ context.user.avatar_url }}{% else %}../../static/news/images/person01.png{% endif %}" class="lgin_pic">
                        <a href="#">{{ context.user.nick_name }}</a>
                        <a href="#">退出</a>
                    </div>
                {% else %}
                    <div class="user_btns fr">
                        <a href="javascript:;" class="login_btn">登录</a> / <a href="javascript:;" class="register_btn">注册</a>
                    </div>
            {% endif %}

 修改好就是下面的效果,但是退出是没反应的。

 第三步:退出处理——前台逻辑

首先修改退出的前台代码,在刚刚那个地方

 1             {% if context.user %}
 2                     <div class="user_login fr">
 3                         <img src="{% if context.user.avatar_url %}{{ context.user.avatar_url }}{% else %}../../static/news/images/person01.png{% endif %}" class="lgin_pic">
 4                         <a href="#">{{ context.user.nick_name }}</a>
 5                         <a href="javascript:;" onclick="logout()">退出</a>
 6                     </div>
 7                 {% else %}
 8                     <div class="user_btns fr">
 9                         <a href="javascript:;" class="login_btn">登录</a> / <a href="javascript:;" class="register_btn">注册</a>
10                     </div>
11             {% endif %}
12 
13 
14 
15 
16         </div>
17     </div>

然后去到main.js里写函数,里面没有退出的函数所以我们要自己写,在这里把里面的内容删掉(红框里的内容)

 函数名所以改成logout,然后从发送请求那复制过来修改一下

function logout() {
    $.ajax({
        url:'/passport/logout',   // 请求地址
        type:'get',                // 请求方法
        success:function (response) {  // 回调函数
            if (response.errno == '0') {
                // 发送短信验证码成功
                    location.reload();
            } else {
                alert(response.errmsg);
            }
        }
    });
}

第四步:退出处理——后台逻辑

退出和登录是差不多的,所以去password.views里写退出逻辑

@passport_blue.route("/logout")
def logout():
    """
    用户退出
    1.删除session
    :return: 
    """
    # 用户退出
    # 1.删除session
    try:
        session.pop("mobile",None)
        session.pop("id",None)
        session.pop("nick_name",None)
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.SERVERERR,errmsg="用户退出失败")
    return jsonify(errno=RET.OK,errmsg="用户退出成功")

写好后右上角就可以区分好。

 

posted @ 2020-10-24 23:52  林卿  阅读(105)  评论(0编辑  收藏  举报