django+mysql框架下的小项目——个人成绩管理系统

个人成绩管理系统

第一次使用这个框架写后台,现在用这个博客来总结以下我遇到的问题,在使用过程中

目录结构

在这里插入图片描述
结构比较简单

  1. app 是用来存放views,用来实现具体代码的;
  2. libary是用来存放设置,路由的,这是在我用这个框架的时候使用的东西
  3. static存放样式以及图片,表格的;
  4. templates用来存放html文件

配置问题

路由urls.py
在这里插入图片描述
settings

在这里插入图片描述在这里插入图片描述

功能设计

1.具有管理功能,登陆后管理自己的成绩
2.用户数据、课程数据、成绩数据存放数据库
3.实现增删改查的功能
4.成绩统计,数据可视化
5.成绩表单的上传与下载
6.图片上传的功能,页面展示
7.具有人像识别功能

登录功能

前端代码部分

<!DOCTYPE html>
	<html>
		<head>
			<meta charset="utf-8">
			<title>login</title>
	        <link rel="stylesheet" href="/static/login.css">
		</head>
		<body>
			<div id="login">
	        <h1>个人成绩管理系统</h1>
	        <form method="post" action="/login/?p={{ studentID }}">
	
	            <img src="{{ img }}" alt="">
	            <input type="text" required="required" placeholder="学号" name="studentID"></input>
	            <input type="password" required="required" placeholder="密码" name="psw"></input>
	            <button class="but" type="submit" >登录</button>
	            <p >{{ msg }}</p>
	
	        </form>
	    </div>
		</body>
	</html>

后端代码

def login(request):
    if request.method == "GET":
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "select * from users where uid='%s'" % ('string')
        cursor = db.cursor()
        cursor.execute(sql)
        results = cursor.fetchall()
        return render(request, 'login.html',)
    else:
        # 用户POST提交的数据
        student=request.POST.get('studentID')
        psw=request.POST.get('psw')
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "select * from users where uid='%s'" % student
        cursor = db.cursor()
        cursor.execute(sql)
        results =cursor.fetchall()
        # print(results)
        # print(results_uid ,results_pwd)
        if cursor.rowcount <= 0:
            return redirect('/registered/')
        else:
            results_uid = results[0][2]
            results_pwd = results[0][5]
            # print(student, psw)
            # student=int(student)
            if  results_uid == student and results_pwd == psw:
                return redirect('/index/')
            else:
                return render(request, 'login.html', {'msg': '学号或密码错误'})
        # print(request.POST)

在这个过程中我遇到一些问题:现在的代码是可以运行的,在此过程中render(request, ‘login.html’, {‘msg’: ‘学号或密码错误’})加粗部分只能给html 页面传一个字典值,如果传第二个就会显示源码

注册功能

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
    <style>
        *{
    margin: 0px;/*所有的外边距为0*/
    padding: 0px;/*所有的内边距为0*/
    box-sizing: border-box;/*规定两个并排的带边框的框*/
}
body{
    background-color:  #4A374A;;
    padding-top: 25px;
}
.rg_layout{
    width: 900px;
    height: 500px;
    border: 8px solid #EEEEEE;/*solid 定义实线*/
    background-color: white;
    margin: auto;
}
.rg_left{
    float: left;
    margin: 15px;
}
.rg_left>p:first-child{
    color: #FFD026;
    font-size: 20px;
}
.rg_left>p:last-child{
    color: #A6A6A6;
    font-size: 20px;
}

.rg_center{
    float: left;
}

.rg_right{
    float: right;
    margin: 15px;
    padding-left: 50px;
}
.rg_right p{
    font-size: 15px;
}
.rg_right p a{
    color: coral;
}
.td_left{
    width: 100px;
    text-align: right;
    height: 45px;
}
.td_right{
    padding-left: 50px;
}
#username,#password,#email,#name,#tel,#birthday,#checkcode{
    width: 251px;
    height: 32px;
    border: 1px solid #A6A6A6;
    /*设置边框圆角*/
    border-radius: 5px;
    padding-left: 10px;
}
#checkcode{
    width: 110px;
}
#img_check{
    height: 32px;
    vertical-align: middle;/*设置图片的位置垂直居中*/
}
#btn_sub{
    width: 100px;
    height: 40px;
    background-color: #FFD026;
    border: 1px solid #FFD026;
    padding-left: 10px;
}

    </style>
</head>
<body>
    <div class="rg_layout">
        <div class="rg_left">
            <p>新用户注册</p>
            <p>USER REGISTER</p>
        </div>
        <div class="rg_center">
            <div class="rg_form">
                <form  method="post" action="/registered/" enctype="multipart/form-data" >
                    <table>
                        <tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
                            <!--for属性与ID属性对应规定 label 绑定到哪个表单元素。-->
                            <td class="td_left"><label for="school">学校</label> </td>
                            <td class="td_right"><input type="text" name="school" id="school"> </td>
                        </tr>
                        <tr>
                            <td class="td_left"><label for="college">学院</label> </td>
                            <td class="td_right"><input type="text" name="college" id="college"> </td>
                        </tr>
                        <tr><!--label 标签的作用是当点击文字也会跳到文本输出框-->
                            <td class="td_left"><label for="uid">学号</label> </td>
                            <td class="td_right"><input type="text" name="uid" id="uid"> </td>
                        </tr>
                        <tr>
                            <td class="td_left"><label for="sname">姓名</label> </td>
                            <td class="td_right"><input type="text" name="sname" id="sname"> </td>
                        </tr>
                        <tr>
                            <td class="td_left"><label for="email">Email</label> </td>
                            <td class="td_right"><input type="email" name="email" id="email"> </td>
                        </tr>
                        <tr>
                            <td class="td_left"><label for="password">密码</label> </td>
                            <td class="td_right"><input type="password" name="password" id="password"> </td>
                        </tr>
                        <tr>
                            <td class="td_left"><label for="picture">头像</label> </td>
                            <td class="td_right"><input type="file" name="picture" id="picture"> </td>
                        </tr>
                        <tr>
                            <td colspan="2" align="center">
                                <input type="submit" value="注册" id="btn_sub">
                            </td>
                        </tr>

                    </table>
                </form>
            </div>
        </div>

    </div>
</body>
</html>

后端代码

def registered(request):
    if request.method == "GET":
        return render(request, 'registered.html')
    else:
        # 用户POST提交的数据
        school=request.POST.get('school')
        college=request.POST.get('college')
        uid=request.POST.get('uid')
        sname = request.POST.get('sname')
        email=request.POST.get('email')
        pwd=request.POST.get('password')
        picture=request.POST.get('picture')
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "select * from users where uid='%s'" % uid
        # print(school,college,uid,sname,email,pwd,picture)
        cursor = db.cursor()
        cursor.execute(sql)
        if cursor.rowcount > 0:
            return render(request, 'login.html',{'msg':'学号已注册,请确认是否正确'})
        else:
            sal = """INSERT INTO users(school,college,uid,sname,email,password,picture)VALUES(%s,%s,%s,%s,%s,%s,%s)"""
            cursor.execute(sal, (school,college,uid,sname,email,pwd,picture))
            db.commit()
            db.close()
            return redirect('/login/')

现在这些代码存在一些问题没办法,图片在存在了数据库中,没有存在文件夹中

def registered(request):
    if request.method == "GET":
        return render(request, 'registered.html')
    else:
        # 用户POST提交的数据
        school=request.POST.get('school')
        college=request.POST.get('college')
        uid=request.POST.get('uid')
        sname = request.POST.get('sname')
        email=request.POST.get('email')
        pwd=request.POST.get('password')
        picture=request.FILES.get('picture')
        if not picture:
            return HttpResponse("no files for upload!")
        destination = open(os.path.join("F:\\Users\\asus\\PycharmProjects\\python\\libary\\static\\pic", picture.name), 'wb+')
        for chunk in picture.chunks():  # 分块写入文件
            destination.write(chunk)
        destination.close()
        # return HttpResponse("upload over!")
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "select * from users where uid='%s'" % uid
        print(school,college,uid,sname,email,pwd,picture)
        print(type(picture))
        cursor = db.cursor()
        cursor.execute(sql)
        if cursor.rowcount > 0:
            return render(request, 'login.html',{'msg':'学号已注册,请确认是否正确'})
        else:
            # 4.在数据库中保存上传记录
            sal = """INSERT INTO users(school,college,uid,sname,email,password,picture)VALUES(%s,%s,%s,%s,%s,%s,%s)"""
            cursor.execute(sal, (school,college,uid,sname,email,pwd,str(picture)))
            db.commit()
            db.close()
            return redirect('/login/')

上面的问题解决了

主页

前端代码

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title></title>
    <link rel="stylesheet" href="/static/index.css">
</head>

<body>

<div class="width">
        <h2>成绩展示</h2>
    <ul>
        <li><a href="/add_score/">添加</a></li>
        <li><a href="/importfile/">导入</a></li>
        <li><a href="/exportfile/">导出</a></li>
        <li><a href="/del_score/">删除</a></li>
        <li><a href="/updata_score/">更新</a></li>
        <li><a href="/statistical/">统计</a></li>
        <li><a href="/visualization/">学期成绩汇总</a></li>
        <li><a href="/center/">个人中心</a></li>
    </ul>
		<table border="1" cellspacing="0" cellpadding="0">
			<thead>
				<tr>
					<th>cid</th>
					<th>semester</th>
					<th>cname</th>
                    <th>attribute</th>
                    <th>learning_cycle</th>
                    <th>credits</th>
                    <th>score</th>
				</tr>
			</thead>
			<tbody>
                {% for row in curscore_list %}
                    <tr>
                        <td>{{ row.0 }}</td>
                        <td>{{ row.2 }}</td>
                        <td>{{ row.3 }}</td>
                        <td>{{ row.4 }}</td>
                        <td>{{ row.5 }}</td>
                        <td>{{ row.6 }}</td>
                        <td>{{ row.7 }}</td>
                    </tr>
                {% endfor %}
			</tbody>
		</table>
</div>
</body>
</html>

后端代码

def index(request):
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "select * from curscore"
        cursor = db.cursor()
        cursor.execute(sql)
        curscore_list = cursor.fetchall()
        # print(curscore_list)
        cursor.close()
        db.close()
        return render(request, 'index.html', {'curscore_list': curscore_list})

增删改查

前端
add

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>addscore</title>
</head>
<body>
<h1>添加课程</h1>
<form method="post" action="/add_score/">
    <p>学年学期 <input type="text" name="semester" ></p>
    <p>课程<input type="text" name="course"></p>
    <p>属性 <input type="text" name="attribute" ></p>
    <p>学时 <input type="text" name="learning_cycle" ></p>
    <p>学分 <input type="text" name="credits" ></p>
    <p>成绩<input type="text" name="score" ></p>
    <p></p>
    <input type="submit" name="submit" value="提交">
</form>
</body>
</html>

del

del
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>delscore</title>
</head>
<body>
<h1>删除课程</h1>
<form method="post" action="/del_score/">
    <p>要删除课程的课程号 <input type="text" name="del_cid" id=""></p>
    <input type="submit" name="" id="" value="提交">

</form>
</body>
</html>

updata

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>修改课程,或者成绩</h1>
<form method="post" action="/updata_score/">
    <p>需要修改的课程的课程号 <input type="text" name="updata_cid" id=""></p>
    <p>成绩 <input type="text" name="score" id=""></p>
    <input type="submit" name="" id="" value="提交">
</form>
</body>
</html>

后端代码

def add_score(request):
    if request.method=='GET':
        return render(request,'add_score.html')
    else:
        cname = request.POST.get('course')
        score = request.POST.get('score')
        cid = request.POST.get('cid')
        semester = request.POST.get('semester')
        attribute = request.POST.get('attribute')
        learning_cycle = request.POST.get('learning_cycle')
        credits = request.POST.get('credits')
        # print(cname,score,cid,semester,attribute,learning_cycle,credits)
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        cursor = db.cursor()
        sal = """INSERT INTO curscore(uid,semester,cname,attribute,learning_cycle,credits,score)VALUES(%s,%s,%s,%s,%s,%s,%s)"""
        cursor.execute(sal, ('string',semester,cname,attribute,learning_cycle,credits,score))
        db.commit()
        db.close()
        return redirect('/index/')


def del_score(request):
    if request.method =='GET':
        return render(request,'del_score.html')
    else:
        cid = request.POST.get('del_cid')
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        cursor = db.cursor()
        sql = "DELETE FROM curscore WHERE cid=%s" % cid
        cursor.execute(sql)
        db.commit()
        db.close()
        return redirect('/index/')

def updata_score(request):
    if request.method == 'GET':
        return render(request,'updata_score.html')
    else:
        score = request.POST.get('score')
        cid = request.POST.get('updata_cid')
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        cursor = db.cursor()
        sql = "update curscore set score=%s WHERE cid=%s" % (score,cid)
        cursor.execute(sql)
        db.commit()
        db.close()
        return redirect('/index/')

导入导出

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导入</title>
</head>
<body>
    <form class="" action="/importfile/" method="post" enctype="multipart/form-data" >
    {% csrf_token %}
    <input type="file" name="excel_data">
    <p></p>
    <input type="submit" class="btn btn-default" value="上传">
</form>
</body>
</html>

后端代码

def importfile(request):
    if request.method == 'POST':  # 获取对象
        excel_raw_data = pandas.read_excel(request.FILES.get('excel_data'))
        # print(type(excel_raw_data.index))
        db = create_engine('mysql+pymysql://root:123456@localhost:3306/achievement?charset=utf8')
        # db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        # cursor = db.cursor()
        df1 = pandas.DataFrame(excel_raw_data)
        # print(df1)
        excel_raw_data.to_sql(name = 'curscore',con=db, if_exists= 'append',index=False)
        # db.commit()
        # db.close()
        return redirect('/index/')
    return render(request, 'importfile.html')

def exportfile(request):
    if request.method =='GET':
        outfile = BytesIO()
        engine = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = """SELECT * FROM curscore where uid='string'"""
        df = pandas.read_sql(sql, engine)
        response = HttpResponse(content_type='application/vnd.ms-excel')
        execl_name = 'curscore'
        response['Content-Disposition'] = 'attachment;filename={0}.xlsx'.format(execl_name)
        df.to_excel(outfile, index=False)
        response.write(outfile.getvalue())
        return response
    else:
        return redirect('/index/')

可视化

前端代码

<html>
<head>
<meta charset="UTF-8" />
<title>可视化成绩</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
</head>
<body>
<div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
<script language="JavaScript">
$(document).ready(function() {
   var title = {
       text: '学年成绩汇总'
   };
   var subtitle = {
        text: 'Source: imnu.edu.cn'
   };
   var xAxis = {
       categories: ['2018-2019-1', '2018-2019-2', '2019-2020-1', '2019-2020-2', '2020-2021-1', '2020-2021-2'
              ,'2021-2022-1', '2021-2022-2']
   };
   var yAxis = {
      title: {
         text: '总分数'
      },
      plotLines: [{
         value: 0,
         width: 1,
         color: '#808080'
      }]
   };

   var tooltip = {
      valueSuffix: ''
   }

   var legend = {
      layout: 'vertical',
      align: 'right',
      verticalAlign: 'middle',
      borderWidth: 0
   };

   var series =  [
      {
         name: 'string',
          data:{{ total_score | safe }}
         {#data: [{{ total_score1 | safe}},{{ total_score2 | safe }},{{ total_score3 | safe }},{{ total_score4  | safe}},{{ total_score5 | safe }},{{ total_score6 | safe }},{{ total_score7 | safe }},{{ total_score8  | safe}}]#}
      },

   ];

   var json = {};

   json.title = title;
   json.subtitle = subtitle;
   json.xAxis = xAxis;
   json.yAxis = yAxis;
   json.tooltip = tooltip;
   json.legend = legend;
   json.series = series;

   $('#container').highcharts(json);
});
</script>
</body>
</html>

后端代码

def visualization(request):
    if request.method=="GET":
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "select score from curscore where semester = '2018-2019-1'"
        cursor = db.cursor()
        cursor.execute(sql)
        results = cursor.fetchall()
        total=0
        for item in results:
            for jtem in item:
                total=total+jtem
        print(total)
        sql1 = "select score from curscore where semester = '2018-2019-2'"
        cursor = db.cursor()
        cursor.execute(sql1)
        results1 = cursor.fetchall()
        total1=0
        for item in results1:
            for jtem in item:
                total1 = total1 + jtem
        print(total1)
        sql2 = "select score from curscore where semester = '2019-2020-1'"
        cursor = db.cursor()
        cursor.execute(sql2)
        results2 = cursor.fetchall()
        total2 = 0
        for item in results2:
            for jtem in item:
                total2 = total2 + jtem
        print(total2)
        sql3 = "select score from curscore where semester = '2019-2020-2'"
        cursor = db.cursor()
        cursor.execute(sql3)
        results3 = cursor.fetchall()
        total3 = 0
        for item in results3:
            for jtem in item:
                total3 = total3 + jtem
        print(total3)
        sql4 = "select score from curscore where semester = '2020-2021-1'"
        cursor = db.cursor()
        cursor.execute(sql4)
        results4 = cursor.fetchall()
        total4 = 0
        for item in results4:
            for jtem in item:
                total4 = total4 + jtem
        print(total4)
        sql5 = "select score from curscore where semester = '2020-2021-2'"
        cursor = db.cursor()
        cursor.execute(sql5)
        results5 = cursor.fetchall()
        total5 = 0
        for item in results5:
            for jtem in item:
                total5 = total5 + jtem
        print(total5)
        sql6 = "select score from curscore where semester = '2021-2022-1'"
        cursor = db.cursor()
        cursor.execute(sql6)
        results6 = cursor.fetchall()
        total6 = 0
        for item in results6:
            for jtem in item:
                total6 = total6 + jtem

        sql7 = "select score from curscore where semester = '2021-2022-2'"
        cursor = db.cursor()
        cursor.execute(sql7)
        results7 = cursor.fetchall()
        total7 = 0
        for item in results7:
            for jtem in item:
                total7 = total7 + jtem
        db.close()
        total_score=[total,total1,total2,total3,total4,total5,total6,total7]
        print(total_score)
        return render(
            request,
            'visualization.html',
            {'total_score':total_score}
        )

在这个过程中遇到了一个问题cursor.fetchall()的返回值是元组套元组,在循环往外传值时得双循环

统计

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>统计</title>
</head>
<body>
    <h1>统计重修个数</h1>
    <p>以下课程需要重修</p>
    <table border="1" cellspacing="0" cellpadding="0">
			<thead>
				<tr>
					<th>cid</th>
					<th>semester</th>
					<th>cname</th>
                    <th>attribute</th>
                    <th>learning_cycle</th>
                    <th>credits</th>
                    <th>score</th>
				</tr>
			</thead>
			<tbody>
                {% for row in results %}
                    <tr>
                        <td>{{ row.0 }}</td>
                        <td>{{ row.2 }}</td>
                        <td>{{ row.3 }}</td>
                        <td>{{ row.4 }}</td>
                        <td>{{ row.5 }}</td>
                        <td>{{ row.6 }}</td>
                        <td>{{ row.7 }}</td>
                    </tr>
                {% endfor %}
			</tbody>
		</table>
    <a href="/index/"> <strong>回到主页</strong> </a>
</body>
</html>

后端代码

def statistical(request):
    db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
    cursor = db.cursor()
    sql = "select * from curscore where score<75"
    cursor.execute(sql)
    results = cursor.fetchall()
    # print(results)
    return render(
        request,
        'statistical.html',
        # {'reset' : count},
        {'results':results}

    )

更换头像

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>更新头像</title>
</head>
<body>
<form  method="POST"  action="/updata_pic/" enctype="multipart/form-data">
    <h3>uid <input type="text" name="uid" id=""></h3>
    <h3>上传要修改的头像</h3>
    <p><input type="file" name="updata_pic" ></p>
    <input type="submit" name="submit" value="提交">
</form>

</body>
</html>

后端代码

def updata_pic(request):
    if request.method=='GET':
        return render(request, 'updata_pic.html')
    else:
        picture=request.FILES.get('updata_pic')
        print(picture)
        uid = request.POST.get('uid')
        if not picture:
            return HttpResponse("no files for upload!")
        destination = open(os.path.join("F:\\Users\\asus\\PycharmProjects\\python\\libary\\static\\pic", picture.name),'wb+')
        for chunk in picture.chunks():  # 分块写入文件
            destination.write(chunk)
        destination.close()
        picture=str(picture)
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "update users set picture='%s' WHERE uid='%s'" % (picture,uid)

        cursor = db.cursor()
        cursor.execute(sql)
        db.commit()
        db.close()
        return redirect('/center/')

在这个过程中sql语句出现了问题,字符串的替换得加‘%s‘,才可以成功

个人中心

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Personal center</title>
    <style>
        .wid {
            width: 1200px;
            margin: 0 auto;
            padding: 100px 0;
        }
        .pic {
            width: 70px;
            height: 100px;
            background-color: red;
            float: left;
            margin-right: 20px;
        }
        .pic img {
            width: 70px;
            height: 100px;
        }
        .uppic {
            width: 70px;
            height: 20px;
            background-color: #3762bc;
        }
        .uppic p a {
            text-decoration: none;
            color: #fff;
        }
    </style>
</head>
<body>
    <div class="wid">
        {% for row in result %}
            <div class="pic">
                <img src="../static/pic/{{ row.2 }}" alt="头像">
            </div>
            <h3>姓名:{{ row.1 }}</h3>
            <h3>学号:{{ row.0 }}</h3>
        {% endfor %}
    <div class="uppic">
         <p><a href="/updata_pic/">更新头像</a></p>
    </div>

    </div>

</body>
</html>

后端代码

def center(request):
    if request.method=='GET':
        db = pymysql.connect(host="localhost", user="root", passwd="123456", db="achievement", port=3306)
        sql = "select uid,sname,picture from users where uid = 'string'"
        cursor = db.cursor()
        cursor.execute(sql)
        results = cursor.fetchall()
        print(results)
        return  render(
            request,
            'center.html',
            {'result':results}
            # {'picture':picture}
        )
    else:
        return redirect('/index/')

最后总结

在这个项目中感觉,遇到的问题很多,多数还是对于sql语句的不熟悉,还有对于框架的不熟悉导致的,以后多练习多熟练吧

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值