Python实现BS架构Flask的Web学生管理信息系统

本文介绍了一种使用前后端分离技术设计的学生信息管理系统,前端基于Bootstrap和Jquery,后端采用Python的Flask框架,数据库使用sqlite3。系统实现了学生信息的增删改查、数据验证、操作提示、批量删除和分页显示等功能,并具有响应式设计,适应不同设备。此外,还包含了登录验证码验证和系统安全性的考量。
摘要由CSDN通过智能技术生成

一、摘 要
在信息技术不断推陈出新的背景下, 针对传统人工管理学生信息方式效率低, 提出一种基于前后端分离设计的学生信息管理系统。
本设计前端部分采用基于 Bootstrap 框架设计,采用 Jquery 进行前后端数据的交互和传递,后端功能逻辑的实现采用 Python 的 Flask 框架实现,数据库采用较为轻量的 sqlite3。
本系统设计主要为对学生信息管理的增删改查,同时实现了数据合法性验证功能,操作结果提示功能,批量删除功能,数据显示分页,为登录页面添加验证码验证等相关功能,且进行了响应性设计,支持在不同设备下使用,本程序设计是在 B/S 架构下的较为简单的学生信息管理系统。
1.1 关 键 词: 学生信息管理系统,flask,前后端分离,B/S 架构
二、ABSTRACT
In the context of the continuous innovation of information technology, in view of the low efficiency of traditional manual management of student information, a student information management system based on the design of front-end and back-end separation is proposed.
The front-end part of this design is designed based on Bootstrap framework, and Jquery is used for the interaction and transmission of front-end and back-end data, the realization of back-end functional logic is realized by Python’s Flask framework, and the database uses sqlite3,which is a relatively lightweight database.
The system design is mainly for the addition, deletion, modification, and checking of student information management. At the same time, it realizes the data legality verification function, the operation result prompt function, the batch deletion function, the data display paging, and the verification code verification for the login page and other related functions.Responsive design is carried out to support the use of different devices. This program design is a relatively simple student information management system under the B/S architecture. Key words: student information management system,flask,front-end and back-end separation,the B/S architecture
目录
基于 B/S 架构的管理信息系统 1
一、摘 要 1
1.1 关 键 词: 学生信息管理系统,flask,前后端分离,B/S 架构 1
二、ABSTRACT 1
2.1 实验目的 2
2.2 实验系统分析 2
删除单个或多个学生信息 3
2.3 实验系统设计环境 4
2.3.1 系统环境配置 4
2.3.2 系统设计简介 4
2.3.3 登录界面 5
2.3.4 系统界面 7
2.3.5 新增学生界面 7
2.3.6 修改信息界面 11
2.3.7 删除学生界面 13
2.4 功能点展示及代码分析 13
2.4.1 悬浮表单(模态框) 13
2.4.2 数据完整性验证 16
2.4.3 操作结果提示 21
2.4.4 显示分页 26
2.4.5 批量删除 34
2.4.6 登录验证码 44
2.5 系统安全性及异常处理 46
2.5.1 更改 URL 绕过登录 47
2.5.2 登陆页面输入不合法 49
2.5.3 输入数据不合法 50
2.5.4 修改、删除信息时违规操作 54
三、总结与不足 57
四、项目分工情况 58
五、参考文献 58

from flask import Flask, render_template, request, url_for, redirect, session, jsonify
from dbSqlite3 import *
import uuid
import logging
import json
import re
from flask import Flask, request, render_template
from flask_sessionstore import Session
from flask_session_captcha import FlaskSessionCaptcha
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# captcha
app.config["SECRET_KEY"] = uuid.uuid4()
app.config['CAPTCHA_ENABLE'] = True
app.config['CAPTCHA_NUMERIC_DIGITS'] = 5
app.config['CAPTCHA_WIDTH'] = 250
app.config['CAPTCHA_HEIGHT'] = 50
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db/student_083_2.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SESSION_TYPE'] = 'sqlalchemy'
Session(app)
captcha = FlaskSessionCaptcha(app)

# captcha end

# SQLAlchemy对象创建

db = SQLAlchemy(app)


# 学生专业类
class stu_profession(db.Model):
    stu_profession_id = db.Column(db.Integer, primary_key=True)
    stu_profession = db.Column(db.String(50))


# 学生信息类
class student_info(db.Model):
    __tablename__ = "student_info"
    stu_id = db.Column(db.Integer, primary_key=True)
    stu_name = db.Column(db.String(50))
    stu_sex = db.Column(db.String(2))
    stu_age = db.Column(db.Integer)
    stu_origin = db.Column(db.String(50))
    stu_profession_id = db.Column(db.Integer, db.ForeignKey("stu_profession.stu_profession_id"))
    stu_profession = db.relationship("stu_profession")


# 将学生信息类信息转换为dict输出
def student_to_dict(student_info):
    return dict(
        stu_id=student_info.stu_id,
        stu_name=student_info.stu_name,
        stu_sex=student_info.stu_sex,
        stu_age=student_info.stu_age,
        stu_origin=student_info.stu_origin,
        stu_profession=student_info.stu_profession.stu_profession,
    )


# 检查是否登录
def CheckLogin():
    if 'username' not in session:
        return False
    else:
        return True


@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == "GET":  # 初始情况下直接加载模板
        ret = {'username': '', 'pwd': '', 'hidden': 'none'}
        return render_template('login.html', ret=ret)
    # 如果是post请求,说明用户尝试登录
    # 从数据库获取查询结果
    result, _ = GetSql2("select * from users where username='%s'" % request.form['username'])
    print(result)
    # 用户名、密码、验证码全部验证成功,方可登录,否则登陆失败
    if len(result) > 0 and result[0][1] == request.form['pwd'] and captcha.validate():  # 登陆成功
        session["username"] = request.form['username']  # 使用session保存用户名
        return redirect(url_for('index'))  # 重定向到路由"/"
    else:  # 登陆成功,用户名和密码不清除
        ret = {'username': request.form['username'], 'pwd': request.form['pwd'], 'hidden': 'block'}
        return render_template('login.html', ret=ret)


# 清除session 登出操作
@app.route('/logout')
def logout():
    session.clear()
    return redirect(url_for('login'))


# 加载首页
@app.route('/', methods=['GET'])
def index():
    if not CheckLogin():  # 判断是否登录
        return redirect(url_for('login'))

    return render_template('show.html')


# 获取学生信息
@app.route('/showinfo', methods=['GET'])
def showinfo():
    if not CheckLogin():  # 检查是否登录
        return redirect(url_for('login'))

    page = int(request.args.get('page', 1))  # 当前页面编号
    per_page = int(request.args.get('per_page', 5))  # 当前页面显示几条信息

    name = str(request.args.get('name', ""))  # 用户查询所用的姓名
    stuno = str(request.args.get('stuno', ""))  # 用户查询所用的学号

    '''
    通过SQLAlchemy查询,query表示所查询的对象表,join表示所连接的表名称,filter相当于sql中where语句对查询进行筛选,
    orderby表示按列进行排序,这里以学号为顺序。paginate用来分页,page表示当前所在页,per_page表示每页展示的数据个数
    error_out表示是否对错误信息进行输出 like和sql中一样
    '''

    if name == "" and stuno == "":  # 没有查询关键字
        paginate = db.session.query(student_info).join(stu_profession). \
            filter(student_info.stu_profession_id == stu_profession.stu_profession_id). \
            order_by(student_info.stu_id).paginate(page, per_page, error_out=False)
    elif name != "" and stuno == "":
        paginate = db.session.query(student_info).join(stu_profession). \
            filter(student_info.stu_profession_id == stu_profession.stu_profession_id). \
            filter(student_info.stu_name.like('%%%s%%' % name)). \
            order_by(student_info.stu_id).paginate(page, per_page, error_out=False)
    elif name == "" and stuno != "":
        paginate = db.session.query(student_info).join(stu_profession). \
            filter(student_info.stu_profession_id == stu_profession.stu_profession_id). \
            filter(student_info.stu_id.like('%%%s%%' % stuno)). \
            order_by(student_info.stu_id).paginate(page, per_page, error_out=False)
    else:
        paginate = db.session.query(student_info).join(stu_profession). \
            filter(student_info.stu_profession_id == stu_profession.stu_profession_id). \
            filter(student_info.stu_name.like('%%%s%%' % name)). \
            filter(student_info.stu_id.like('%%%s%%' % stuno)). \
            order_by(student_info.stu_id).paginate(page, per_page, error_out=False)

    stus = paginate.items  # 获取分页得到的学生信息
    ret = []  # 存储格式化后的学生信息结果
    for stu in stus:  # 对获取到的所有学生信息遍历,以对单个学生信息类进行处理
        ret.append(student_to_dict(stu))  # 将处理后的结果存储到返回信息中

    '''
    向前端返回有关分页的信息,has_prev:是否为第一页,prev_num为前一页,pages为共有多少页,next_num为后一页
    total为总共的数据量,per_page为每页的数据量,page为当前页数
    '''

    ret_paginate = {'has_prev': ('yes' if paginate.has_prev else 'no'), 'prev_num': paginate.prev_num,
                    'pages': paginate.pages, 'next_num': paginate.next_num, 'total': paginate.total,
                    'per_page': per_page, 'page': paginate.page}

    return jsonify({'stuinfo': json.dumps(ret, ensure_ascii=False), 'paginate': ret_paginate})  # 返回学生信息和有关分页信息


# 添加学生信息操作
@app.route('/add', methods=['GET', 'post'])
def add():
    if not CheckLogin():
        return redirect(url_for('login'))
    if request.method == "GET":  # 通过get方法返回学生的专业信息
        datas, _ = GetSql2("select * from stu_profession")
        return dict(datas)
    else:  # post 请求方法
        # 从前端Ajax获取到的拟新增的学生信息并字典化
        data = dict(
            stu_id=request.form['stu_id'],
            stu_name=request.form['stu_name'],
            stu_sex=request.form['stu_sex'],
            stu_age=request.form['stu_age'],
            stu_origin=request.form['stu_origin'],
            stu_profession_id=request.form['stu_profession']
        )
        res = {'code': 500, 'message': '添加失败!'}  # 初始化返回结果为错误
        # 正则表达式判断获取的信息是否符合规范
        matchid = re.search(r'^\d{9,12}$', data['stu_id'])
        matchname = re.search(r'^[\u4e00-\u9fa5]{2,6}$', data['stu_name'])
        matchsex = re.search(r'^男$|^女$', data['stu_sex'])
        matchage = re.search(r'^\d{1,3}$', data['stu_age'])
        matchorigin = re.search(r'^[\u4e00-\u9fa5]{2,10}$', data['stu_origin'])
        matchprofession = re.search(r'^\d{1,3}$', data['stu_profession_id'])
        # 后台终端输出判断的测试以便调试
        print(matchid)
        print(matchname)
        print(matchsex)
        print(matchage)
        print(matchorigin)
        print(matchprofession)

        # 判断是否符合
        if matchid and matchname and matchsex and matchage and matchorigin and matchprofession:
            InsertData(data, "student_info")  # 符合则进行插入数据库操作
            res = {'code': 200, 'message': '成功添加!'}
        else:
            res = {'code': 500, 'message': '添加失败!'}

        # 返回结果
        return json.dumps(res, ensure_ascii=False)


# 修改学生信息操作
@app.route('/update', methods=['GET', 'post'])
def update():
    if not CheckLogin():
        return redirect(url_for('login'))
    if request.method == "GET":  # get请求用来进行从数据库获取要修改的学生的原始数据
        stuid = request.args['id']  # 从前端获取的学生学号
        result, _ = GetSql2("select * from student_info where stu_id='%s'" % stuid)  # 进行查询

        # 将通过sql查询的结果字典化 并作为返回值传给前端
        ret = {'stu_id': result[0][0], 'stu_name': result[0][1], 'stu_sex': result[0][2],
               'stu_age': result[0][3], 'stu_origin': result[0][4], 'stu_profession_id': result[0][5]}
        print(ret)
        return ret
    else:  # post请求用来进行修改 以下代码和上面add()的post请求方法一样
        data = dict(
            stu_id=request.form['stu_id'],
            stu_name=request.form['stu_name'],
            stu_sex=request.form['stu_sex'],
            stu_age=request.form['stu_age'],
            stu_origin=request.form['stu_origin'],
            stu_profession_id=request.form['stu_profession']
        )

        res = {'code': 500, 'message': '添加失败!'}

        matchid = re.search(r'^\d{9,12}$', data['stu_id'])
        matchname = re.search(r'^[\u4e00-\u9fa5]{2,6}$', data['stu_name'])
        matchsex = re.search(r'^男$|^女$', data['stu_sex'])
        matchage = re.search(r'^\d{1,3}$', data['stu_age'])
        matchorigin = re.search(r'^[\u4e00-\u9fa5]{2,10}$', data['stu_origin'])
        matchprofession = re.search(r'^\d{1,3}$', data['stu_profession_id'])
        print(matchid)
        print(matchname)
        print(matchsex)
        print(matchage)
        print(matchorigin)
        print(matchprofession)

        if matchid and matchname and matchsex and matchage and matchorigin and matchprofession:
            UpdateData(data, "student_info")
            res = {'code': 200, 'message': '成功添加!'}
        else:
            res = {'code': 500, 'message': '添加失败!'}

        # InsertData(data, "student_info")
        # res = {'code': 200, 'message': '成功添加!'}
        return json.dumps(res, ensure_ascii=False)


# 删除学生信息,根据单个id直接删除
@app.route('/del/<id>', methods=['GET'])
def delete(id):
    if not CheckLogin():
        return redirect(url_for('login'))

    DelDataById("stu_id", id, "student_info")  # 如果能正常执行则能正常删除,否则直接报错。
    res = {'code': 200, 'message': '成功添加!'}
    return res


# 主函数调用
if __name__ == '__main__':
    app.run(debug=True)

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

biyezuopinvip
关注 关注
  • 6
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
python搭建bs架构_bs架构设计方案的.doc
weixin_39969568的博客
12-20 1691
bs架构设计方案的网站架构设计方案目 录1设计思路32系统结构33网络规划及性能计算33.1网络架构33.2网络架构说明43.2.1采用双防火墙双交换机做网络冗余,保障平台服务43.2.2采用硬件设备负载均衡器,实现网络流量的负载均衡43.3系统测算43.3.1系统处理能力要求43.3.2业务处理能力要求43.3.3系统话务模型43.4配置核算53.4.1数据库服务器性能核算53.4.2WEB服务...
python基于BS架构的在线学习与推荐系统
weixin_42328796的博客
06-29 398
通过对在线学习与推荐系统的开发,让我深刻明白开发一个程序软件需要经历的流程,当确定要开发一个在线学习与推荐系统的程序时,我在开发期间,对其功能进行合理的需求分析,然后才是程序软件的功能的框架设计,数据库的实体与数据表设计,程序软件的功能详细界面实现,以及程序的功能测试等进行全方位的细致考虑,虽然在此过程中,各个环节都遇到了大大小小的困难,但是通过对这些问题进行反复的分析,深入的思考,借助各种相关文献资料提供的方法与解决思路成功解决面临的各个问题,最后成功的让我开发的在线学习与推荐系统得以正常运行。
基于python实现BS架构FTP服务器程序.rar
05-09
本项目是使用python实现的基于BS架构的FTP服务器程序,该FTP服务器程序使用web方式进行部署与管理,可以直接通过浏览器访问内置的web服务器进行配置与管理FTP服务
基于python+flask框架的学生信息管理系统(开题+程序+论文) 计算机毕设
最新发布
zhihao503的博客
08-28 1085
本研究将围绕学生信息管理系统的设计与实现展开,具体研究内容包括以下几个方面:首先,进行系统的需求分析,明确系统用户(如学生、辅导员、管理人员等)的角色和权限,以及系统应实现的主要功能;接着,根据系统需求,分别开发奖学金申请、贷款申请、学生信息管理、辅导员工作支持、学籍信息维护、学分管理与申请、重修申请处理、党团建设管理、贷款记录追踪以及请假信息管理等功能模块;通过该系统的应用,旨在实现学生信息的全面数字化管理,提高管理效率,优化管理流程,提升服务质量,为学生的成长成才和学校的持续发展提供有力保障。
基于Python实现的基于BS架构的在线学习与推荐系统知识分享下
qq_53797749的博客
08-06 197
基于Python的基于BS架构的在线学习与推荐系统的设计与实现》该项目采用技术Python的django框架、mysql数据库 ,项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、核心代码介绍视频等。用户端功能有:首页、学习资源、资源推荐、资源评价、公告信息、个人中心、后台管理。管理端功能有:科目管理、教师管理、学生管理、学习资源管理、学习记录管理、资源评价管理、系统管理等。教师端的功能有:个人中心、学习资源管理、学习记录管理、资源评价管理。数据库:MySQL 5.7.26(版本号)
python开发bs程序_Python开发简单爬虫
weixin_39642990的博客
11-29 214
简单爬虫框架:爬虫调度器 -> URL管理器 -> 网页下载器(urllib2) -> 网页解析器(BeautifulSoup) -> 价值数据Demo1:#coding:utf8importurllib2,cookieliburl= "https://www.baidu.com"print '第一种方法'response1=urllib2.urlopen(url)print response1....
web学生管理系统(Python)
Rose✿留白ق೨的博客
10-21 1000
服务端程序: import flask import sqlite3 import json app = flask.Flask(__name__) class StudentDB: def openDB(self): self.con = sqlite3.connect("students.db") self.cursor = self.con.cursor() def closeDB(self): self.con.commit()
基于Python Flask WebBS学生信息管理系统源码+项目说明(毕设项目).zip
10-31
基于Python Flask WebBS学生信息管理系统源码+项目说明(毕设项目).zip 已获导师指导并通过的97分的高分设计项目,也可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于Python Flask ...
基于flask学生信息管理系统源码毕业设计
01-27
基于flask学生信息管理是系统教务系统管理系统 -Python期末大作业(相应的安卓版在Flasky_app库) 主要用到:后端框架flask + 数据库管理sqlalchemy + 数据库sqlite + 前端bootstrap 是
python实现bs架构flaskweb学生管理信息系统
12-19
实现一个基于Flask框架的学生管理信息系统,我们可以使用Python语言和Flask框架来构建该系统。 首先,我们可以使用Python编写学生管理信息系统的后端逻辑。我们可以定义学生类和一些方法来处理学生信息的增删改查...
基于Python Flask WebBS学生信息管理系统源码
10-15
总结,基于Python Flask Web学生信息管理系统是一个典型的BS架构应用,通过Flask的路由、模板、数据库操作等功能,实现了对学生信息的增删改查。学习和理解这个系统,有助于开发者掌握Web应用开发的基本流程和技术...
基于pythonBS 结构的新疆旅游信息网站的设计与实现.docx
04-06
1绪论 1 1.1开发的目的和意义 1 1.2国内外研究现状 1 1.3研究的主要内容 1 1.4系统的开发环境及平台 2 2相关技术综述 3 2.1Python 开发语言 3 2.2Python 的 Django 框架 3 2.3MySQL 数据库 3 3系统需求分析 4 3.1需求分析 4 3.2系统功能分析 4 4系统设计 5 4.1系统总体设计 5 4.2数据库的设计 6 5系统的实现 9 5.1前台展示系统 9 5.1.1前台主界面 9 5.1.2个人中心模块 10 5.1.3新疆旅游模块 12 5.1.4特产商城模块 14 5.1.5新闻资讯模块 15 5.2后台管理系统 17 5.2.1后台管理员 17 5.2.2用户管理模块 17 5.2.3商城信息模块 19 5.2.4新闻资讯模块 20 5.2.5景区列表模块 22 6系统测试 27 6.1测试目的 27 6.2单元测试 27 6.3集成测试 27 6.4系统测试 28 结论 30 致谢 31 参考文献 32
python用Django实现简单的web学生信息管理系统
11-04
python用Django实现简单的web学生信息管理系统,对于python的Django的简单应用
Python学生管理系统web网页版)
11-02
Python学生管理系统web网页版),前面发布了python的控制台版本的学生管理系统和使用tkinter界面版的学生管理系统,这次是使用Django开发基于学生的实体类的增删改查,里面包含项目演示录屏和完整的项目源码与数据库的建设,将项目导入pycharm建设表之后就能直接使用,有需要的小伙伴可以下载哦~
Python_django_web学生管理系统(使用mysql数据库)
03-23
使用Python编程语言 Django MySQL数据库开发web学生管理系统,里面附带环境搭建的详细过程和开发过程中遇到的一些bug的讲解
基于BS架构实现毕业设计网上管理系统【优质毕业设计、课程设计项目】.zip
05-20
本项目名为“基于BS架构实现毕业设计网上管理系统”,是一份优质的毕业设计或课程设计资源,包含完整的程序源代码、数据库文件以及配置环境的详细说明,旨在帮助学生开发者理解并实施一个基于浏览器-服务器...
python-学生信息管理系统
mashaokang1314的博客
05-04 3187
import json import time studentinfo = &quot;&quot;&quot; 1.查询个人信息 2.修改信息 3.退出登陆 &quot;&quot;&quot; update_student=&quot;&quot;&quot; 1.修改名字 2.修
Python 服务器(BS)基础
weixin_43634617的博客
11-13 430
服务器基础 1、环境 # Flaskflask框架 # Flask-Cors:解决请求跨域 2、功能名称 from flask import Flask, request, render_template from flask_cors import CORS 3、页面逻辑 # 创建服务器对象 app = Flask(__name__) # 处理跨域问题 CORS(app, supports...
python web框架 多线程_[python]函数、类、多线程、BS架构
weixin_39777213的博客
11-29 200
写一小段代码很容易维护。但是一旦我们的程序代码超过一百行,那就需要有一些代码架构,便于今后的维护和功能扩展。本文介绍常用的python基本代码架构及其相关概念。有了这些概念,基本就可以开始编程了。具体语法可自行百度,网上有很多翔实的教程和例子。关于代码注释,编码当时一时爽、觉得自己写的代码多久都认识、一句注释都懒得写的码农,相信已经被过了一星期就连它爸比都认不出它是谁的熊(dai)孩(ma)子教育...
写文章

热门文章

  • 英诚医院内部网络规划与设计 58583
  • 网上商城购物系统设计与实现(Java+Web+SSM+MySQL) 42035
  • 基于html+css+js的图书管理系统 32010
  • 基于Python的作业自动批改系统 27971
  • 停车场信息管理系统(SqlServer数据库课程设计) 24751

分类专栏

  • 笔记 7篇

最新评论

  • 网上商城购物系统设计与实现(Java+Web+SSM+MySQL)

    biyezuopinvip: 文末可加

  • 网上商城购物系统设计与实现(Java+Web+SSM+MySQL)

    weixin_74048995: 求资源

  • 基于Python的多模态生理信号情感识别

    biyezuopinvip: 文章首尾都有下载链接

  • 基于Python的多模态生理信号情感识别

    wuyouchen_: 请问代码是完整的吗?

  • 基于Spring Boot+Vue的毕业设计选题管理系统设计与实现

    biyezuopinvip: 文末加

最新文章

  • 模拟信号数字无线传输演示系统的设计与实现(毕业论文)
  • 基于Android的酒店预定系统(毕业论文)
  • 基于AFL的覆盖引导模糊测试优化技术研究
2024
10月 14篇
09月 38篇
08月 38篇
07月 50篇
06月 60篇
05月 66篇
04月 69篇
03月 70篇
02月 59篇
01月 62篇
2023年379篇
2022年1936篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司有了网站 怎么做排名优化有实力的企业网站优化哪家好如何分析一个网站优化新网站优化芜湖市网站关键词排名优化贵州网站优化好吗回民区网站seo优化排名下城区企业网站优化平台临沂网站优化代理商湘潭网站优化哪家值得信赖怀化高质量营销型网站优化优化网站建设流程及费用中国慕课网站优化太原卫浴行业网站优化推广有哪些黄浦区官网网站优化公司网站优化方案策略分析成都哪个网站做优化好网站推广优化渠道排名什么网站可以优化客户流量江门优化型外贸网站建设网站seo优化哪家好哈尔滨网站怎样优化手机网站优化哪家好砀山网站优化哪家好坪山网站优化宜昌工厂网站优化多少钱如何优化医疗网站沧州百度快照网站优化价格云梦网站优化网站多久可以优化权重香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化