• 1.1个人中心展示以及基本资料


    首先个人中心的展示为以下的效果

     个人中心属于单独的一个板块了,所以我们先单独给他开一个视图函数,名字取为user

     新建为视图函数的第一步就是注册蓝图对象,前面写过很多次了,这次就不放步骤了

    然后以下为前端的代码

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>用户中心</title>
      6     <link rel="stylesheet" type="text/css" href="../../static/news/css/reset.css">
      7     <link rel="stylesheet" type="text/css" href="../../static/news/css/main.css">
      8     <script type="text/javascript" src="../../static/news/js/jquery-1.12.4.min.js"></script>
      9     <script type="text/javascript" src="../../static/news/js/jquery.form.min.js"></script>
     10     <script type="text/javascript" src="../../static/news/js/main.js"></script>
     11 </head>
     12 <body>
     13     <div class="header_con">
     14         <div class="header">
     15             <a href="{{ url_for("index.index") }}" class="logo fl"><img src="../../static/news/images/logo.png" alt="logo"></a>
     16             <div class="user_login fr" style="display: block;">
     17                 <img src="{% if context.user.avatar_url %}{{ context.user.avatar_url }}{% else %}../../static/news/images/person01.png{% endif %}" class="lgin_pic">
     18                     <a href="{{ url_for("user.user_info") }}">{{ context.user.nick_name }}</a>
     19                     <a href="javascript:;"onclick="logout()">退出</a>
     20             </div>
     21         </div>
     22     </div>
     23 
     24     <div class="conter_con">
     25         <div class="user_menu_con fl">
     26             <div class="user_center_pic">
     27                 <img src="../../static/news/images/user_pic.png" alt="用户图片">
     28             </div>
     29             <div class="user_center_name">{{ context.user.nick_name }}</div>
     30 
     31             <ul class="option_list">
     32                 <li class="active"><a href="{{ url_for("user.base_info") }}" target="main_frame">基本资料</a></li>
     33                 <li><a href="../../static/news/html/user_pic_info.html" target="main_frame">头像设置</a></li>
     34                 <li><a href="../../static/news/html/user_follow.html" target="main_frame">我的关注</a></li>
     35                 <li><a href="../../static/news/html/user_pass_info.html" target="main_frame">密码修改</a></li>
     36                 <li><a href="../../static/news/html/user_collection.html" target="main_frame">我的收藏</a></li>
     37                 <li><a href="../../static/news/html/user_news_release.html" target="main_frame">新闻发布</a></li>
     38                 <li><a href="../../static/news/html/user_news_list.html" target="main_frame">新闻列表</a></li>
     39             </ul>
     40         </div>
     41 
     42         <div class="user_con fr">
     43             <iframe src="{{ url_for("user.base_info") }}" frameborder="0" name="main_frame" class="main_frame" id="main_frame"></iframe>
     44         </div>
     45     </div>
     46     <div class="footer">
     47         <div class="footer_links">
     48             <a href="">关于我们</a>
     49             <span>|</span>
     50             <a href="">联系我们</a>
     51             <span>|</span>
     52             <a href="">招聘人才</a>
     53             <span>|</span>
     54             <a href="">友情链接</a>
     55         </div>
     56         <p class="copyright">
     57             CopyRight © 2018 新经资讯信息技术有限公司 All Rights Reserved<br />
     58 电话:010-****888    京ICP备*******8号
     59         </p>
     60     </div>
     61 
     62     <!-- 登录表单 -->
     63     <form class="login_form_con">
     64         <div class="login_form">
     65             <div class="login_title">
     66                 <h3>登 录</h3>
     67                 <a href="javascript:;" class="shutoff"></a>
     68             </div>
     69             <div class="form_group">
     70                 <input type="text" name="username" autocomplete="off">
     71                 <div class="input_tip">用户名/手机号</div>
     72             </div>
     73             <div class="form_group">
     74                 <input type="password" name="password">
     75                 <div class="input_tip">密码(不少于6位)</div>
     76             </div>
     77             <input type="submit" name="" value="登 录" class="input_sub">
     78             <div class="down_link">还没有账号?<a href="#" class="to_register">立即注册</a></div>
     79         </div>
     80         <div class="mask"></div>
     81     </form>
     82 
     83     <!-- 注册表单 -->
     84     <form class="register_form_con">
     85         <div class="register_form">
     86             <div class="register_title">
     87                 <h3>注 册</h3>
     88                 <a href="javascript:;" class="shutoff"></a>
     89             </div>
     90             <div class="form_group">
     91                 <input type="text" name="username" autocomplete="off" class="phone_input">
     92                 <div class="input_tip">手机号</div>
     93                 <div class="error_tip">手机号不能为空</div>
     94             </div>
     95             <div class="form_group">
     96                 <input type="password" name="code_pwd" class="code_pwd">
     97                 <div class="input_tip">手机验证码</div>
     98                 <a href="javascript:;" class="get_code">点击获取验证码</a>
     99                 <div class="error_tip">验证码不能为空</div>
    100             </div>
    101             <div class="form_group">
    102                 <input type="password" name="password" class="pass_input">
    103                 <div class="input_tip">密码(不少于6位)</div>
    104                 <div class="error_tip">密码不能为空</div>
    105             </div>
    106             <div class="form_group">
    107                 <input type="password" name="code_pwd" class="code_pwd">
    108                 <div class="input_tip">图形验证码</div>
    109                 <img src="../../static/news/images/pic_code.png" class="get_pic_code">
    110                 <div class="error_tip">图形码不能为空</div>
    111             </div>
    112 
    113             <div  class="form_group2 clearfix">
    114                 <input type="checkbox" class="agree_input" checked>
    115                 <p>同意使用条款,并已阅读"跟帖评论自律管理承诺书"</p>
    116                 <div class="error_tip">请勾选</div>
    117             </div>
    118             <input type="submit" name="" value="注 册" class="input_sub">
    119             <div class="down_link">已有账号?<a href="#" class="to_login">立即登录</a></div>
    120         </div>
    121         <div class="mask"></div>
    122     </form>
    123 </body>
    124 </html>

    以下是后端的代码

     1 from . import user_blue
     2 from flask import render_template,redirect,g,url_for,request,session,jsonify,current_app
     3 from info.utlis.tools import user_login_data
     4 from info.response_code import RET
     5 from info import db
     6 @user_blue.route("/user_info")
     7 @user_login_data
     8 def user_info():
     9     #接收用户信息
    10     user = g.user
    11     if not user:
    12         #判断如果用户没有登录的话就直接跳转到主页面
    13         return redirect(url_for('index.index'))
    14     #创建上下文
    15     context = {
    16         "user": user
    17     }
    18     #返回个人中心页面
    19     return render_template("news/user.html",context = context)

    这里我们认为应该就能显示出来了,但是加载页面后却显示以下情况,没有找到页面???

    我们再次查看前端代码中43行可以看到使用了iframe技术,用于页面嵌套页面的,也就是说我们这里还有一个页面根本就没有找到

     我们再次查看前端代码中43行可以看到使用了iframe技术,用于页面嵌套页面的,也就是说我们这里还有一个页面根本就没有找到

     这里templates中有user_base.html这个前端文件也就是说我们的user.html这个前端文件中没有嵌套成功,我们返回43行中进行修改,用url_for这个函数直接传我们新建的base_info这个视图函数的路径

    1 <iframe src="{{ url_for("user.base_info") }}" frameborder="0" name="main_frame" class="main_frame" id="main_frame"></iframe>

    这里修改完后不要忘记上面也要修改

    1 <li class="active"><a href="{{ url_for("user.base_info") }}" target="main_frame">基本资料</a></li>

    以下是base_info 视图函数的代码,用于基本资料的展示和设置

     1 @user_blue.route("/base_info",methods = ["POST","GET"])
     2 @user_login_data
     3 def base_info():
     4     user = g.user
     5     if not user:
     6         return redirect(url_for('index.index'))#这里用url_for 传入主视图函数的路径
     7 
     8     
     9     context = {
    10         "user": user
    11     }
    12     return render_template("news/user_base_info.html", context=context)

    这样简单的个人中心展示就完成了

    最后就得完善基本资料的功能了。(要做到以下的效果

     以下是后端的代码

     1 @user_blue.route("/base_info",methods = ["POST","GET"])
     2 @user_login_data
     3 def base_info():
     4     #接收用户信息同时判断是否登录
     5     user = g.user
     6     if not user:
     7         return redirect(url_for('index.index'))
     8     #当需要提交数据的时候
     9     if request.method == "POST":
    10         #接收参数
    11         signature = request.json.get("signature",None)
    12         nick_name = request.json.get("nick_name", None)
    13         gender = request.json.get("gender", None)
    14         #判断参数是否为空
    15         if not all([signature,nick_name,gender]):
    16             return jsonify(errno=RET.PARAMERR, errmsg="数据接收不齐全")
    17         #判断gender是否在MAN和WOMAN两个选项之中
    18         if not gender in ["MAN","WOMAN"]:
    19             return jsonify(errno=RET.PARAMERR, errmsg="数据错误")
    20         #逻辑添加到数据库
    21         user.gender = gender
    22         user.nick_name = nick_name
    23         user.signature = signature
    24         try:
    25             #上传到数据库
    26             db.session.commit()
    27         except Exception as e:
    28             current_app.logger.error(e)
    29             return jsonify(errno=RET.PARAMERR, errmsg="数据错误")
    30         #更新session信息
    31         session['nick_name'] = user.nick_name
    32         return jsonify(errno=RET.OK, errmsg="成功")
    33     #传递上下文
    34     context = {
    35         "user": user
    36     }
    37     return render_template("news/user_base_info.html", context=context)
  • 相关阅读:
    硬件加速 Hardware Accelerated [MD]
    Redis 常见面试题(2020最新版)
    1秒时限情况下算法复杂度要求
    linux ikatago-server
    Linux踢出其他正在SSH登陆用户
    多个Git帐号的SSH key切换(不同网站的gitlab&github)
    RTL8201 替换适配国产JL11网卡
    网卡PHY 移植注意事项
    django shell执行命令来批量更新model 数据
    git 设置和取消socks5 代理
  • 原文地址:https://www.cnblogs.com/Hdwmsyqdm/p/13913575.html
Copyright © 2020-2023  润新知