angular+flask+mysql python全栈web开发 选课指导博客论坛系统

3 篇文章 0 订阅
1 篇文章 0 订阅

一、选课指导博客论坛系统功能概要

1、需求及设计目的:
学分制与选课制的开展和深入,每学期都会有各种选修课及选课环节,为帮助同学们了解各选修课,构建该平台供同学们评价交流。(初期设想,可扩展)

2、功能设计(基于页面,参考网易云官网页面)
(1)首页功能:热门课程列表,课程搜索,开课教师,登录注册
(2)课程详情:评论与恢复,用户点赞,课程收藏,关联推荐
(3)发布评论:内容编辑,草稿箱,评论发布,缩略图
(4)用户中心:个人资料,我的评论,我的收藏,选课记录
更多扩展内容:
(4)系统管理:课程发布管理,评论管理,用户管理,投稿审核
(5)高级功能:Redis缓存,静态化处理

二、技术知识及工具

MVC开发模式
(1)Angular,使用Ng-zorro组件库快速构建前端页面,开发工具WebStorm。
(2)mysql,开发工具Workbench。
(3)flask,开发工具Pycharm。
(4)css,用于布局优化界面。

三、数据库设计

使用workbench创建了一个名为classdatabase(可自行命名)的数据库,
表设计:course表,用来存储全部课程相关的信息;student_info表,用来存储学生用户信息;advice表,用来存储课程相关评论的信息;。。。(待添加)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、flask对数据库数据进行调用

#导入第三方库及模块
from flask import Flask,jsonify,request,url_for
import pymysql
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS,cross_origin

app = Flask(__name__)
cors = CORS(app)
#解决跨域访问问题

#链接数据库
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:******(数据库连接密码)@localhost:3306/classdatabase'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True    #动态跟踪修改,未来版本移除
db = SQLAlchemy(app)    #创建数据库对象

#构建数据库映射
#数据库模型需要继承db.model
class Course(db.Model):     #课程信息数据库
    __tablename__ = 'course'   #定义表名
    #定义字段,db.Column 表示是一个字段
    c_id=db.Column(db.String(50), primary_key=True)
    t_id = db.Column(db.String(50))
    c_name = db.Column(db.String(25))
    c_type = db.Column(db.String(12))  #课程类型
    c_college = db.Column(db.String(12))  #供选学院
    c_credit= db.Column(db.Integer)   #学分
    c_max=db.Column(db.Integer)       #可选最大人数
    c_room = db.Column(db.String(12))     #上课地点
    c_intraduction = db.Column(db.VARCHAR(250))   #课程介绍
    #c_advice = db.Column(db.Text)        #课程建议

class Account(db.Model):      #学生信息数据库
    __tablename__ = 'student_info'
    s_id = db.Column(db.Integer, primary_key=True)
    s_password = db.Column(db.String(50))
    s_name = db.Column(db.String(50))
    s_sex = db.Column(db.String(5))
    s_college= db.Column(db.String(12))
    s_profession = db.Column(db.String(50))
    s_email = db.Column(db.String(50))


class Advice(db.Model):      #课程评价信息数据库
    __tablename__ = 'advice'
    s_id = db.Column(db.Integer,db.ForeignKey('student_info.s_id'))
    c_id = db.Column(db.String(50),db.ForeignKey('course.c_id'))
    c_advice = db.Column(db.VARCHAR(250),primary_key=True)
    c_time = db.Column(db.DateTime)
    agreecount = db.Column(db.Integer)


db.create_all()  # 创建表

#创建get接口
#用于获取所有课程的信息,能到课程列表,并用于展示
#目前用于首页热门和全部课程两个组件
@app.route('/getclasses')    #默认支持get方法
def getClasses():
    classes = Course.query.all()
    class_list = []
    for i in classes:
        class_list.append({'c_id': i.c_id, 't_id': i.t_id, 'c_name': i.c_name,
                          'c_type': i.c_type,'c_college': i.c_college,'c_credit':i.c_credit,
                          'c_max':i.c_max,'c_room':i.c_room,'c_intraduction':i.c_intraduction
                        })
    return jsonify(class_list)


#用于获取分类标签下课程列表的展示
@app.route('/getclassbytype/<string:c_type>')
def getClassesByname(c_type):
    class1 = Course.query.filter(Course.c_name==c_type).first()
    print(class1)
    class_dict = {'c_id': class1.c_id, 't_id': class1.t_id, 'c_name': class1.c_name,
                          'c_type': class1.c_type,'c_college': class1.c_college,'c_credit':class1.c_credit,
                          'c_max':class1.c_max,'c_room':class1.c_room,'c_intraduction':class1.c_intraduction,
                          'c_advice':class1.c_advice}
    return jsonify(class_dict)



if __name__ == '__main__':

    app.run(debug=True)

待更。。。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值