(python flask)作業(yè)通知系統(tǒng)

簡(jiǎn)介

主要用于班級(jí)作業(yè)通知與管理的網(wǎng)站

功能

  • 1.普通成員:
1)瀏覽學(xué)習(xí)委員發(fā)布的作業(yè)通知
2)認(rèn)證郵箱,是否開啟郵箱通知
  • 2.學(xué)委
1)可以編輯匹颤、修改雕憔、刪除和發(fā)布作業(yè)通知等相關(guān)作業(yè)的操作筛谚;
2)管理成員:可以通過id的查找上鞠、可以刪除本班成員
4)可上傳圖片尺借,插入在線媒體標(biāo)簽份汗,比如音樂盈电、視頻等
  • 3.高級(jí)管理員
1)可以管理所有成員
2)可以修改普通成員的所屬班別
另外,系統(tǒng)默認(rèn)為開啟郵箱通知的用戶發(fā)送郵件

開發(fā)用到的技術(shù):

1.部署系統(tǒng)是Ubuntu,采用的是gunicorn Wsgi Http Server,[鏈接](http://gunicorn.org/杯活,同時(shí)應(yīng)用了nginx反向代理)
2.作業(yè)編輯器采用了開源的富文本wangEditor,[鏈接](http://www.wangeditor.com)
3.前端框架使用的bootstrap v3,因?yàn)樾枨骳ss有一點(diǎn)小改動(dòng)
4.Web應(yīng)用框架使用的是Flask
5.數(shù)據(jù)庫Mysql 5.5.6

技術(shù)要點(diǎn):

1.認(rèn)證用戶

用戶登錄之后匆帚,記錄用戶認(rèn)證狀態(tài),實(shí)現(xiàn)用戶多個(gè)頁面切換依然記住用戶的認(rèn)證狀態(tài)

  • 方案使用Flask-Login

[1].安裝擴(kuò)展

pip install flask-login

[2].用戶模型app/model.py

from flask_login import UserMixin
...
class Students(UserMixin, db.Model):
    __tablename__ = 'students'
...

[3].初始化LoginManager:app/ __init__.py

from flask_login import LoginManager
login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.login_view = 'main.login'
def getApp(config_name):
 ...
    login_manager.init_app(app)
 ...

[4].回調(diào)函數(shù)的實(shí)現(xiàn):app/model.py

from . import login_manager
...
@login_manager.user_loader
def load_user(user_id):
    return Students.query.get(user_id)
...

2.富文本wangEditor的使用

需求
(1)把原來的內(nèi)容文本框換成富文本wangEditor
(2)實(shí)現(xiàn)圖片的實(shí)時(shí)上傳

  • 需求(1)方案:隱藏原來文本輸入框旁钧,構(gòu)建新的wangEditor吸重,當(dāng)按下'提交'時(shí),把內(nèi)容賦值到被隱藏的文本輸入框
    templates/editwork.html

...

 <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript" src="{{ url_for('static',filename='js/wangEditor.min.js') }}"></script>
    <script type="text/javascript">

        var $text1 = $('#content')
        $text1.hide()
        $text1.after('<div id=\'editor\' class=\'form-group\'></div>')
        $ed = $('#editor')
        var E = window.wangEditor
        var editor = new E('#editor')
        editor.customConfig.menus = [
            'head',  // 標(biāo)題
            'bold',  // 粗體
            'fontSize',  // 字號(hào)
            'fontName',  // 字體
            'italic',  // 斜體
            'underline',  // 下劃線
            'strikeThrough',  // 刪除線
            'foreColor',  // 文字顏色
            'backColor',  // 背景顏色
            'link',  // 插入鏈接
            'list',  // 列表
            'justify',  // 對(duì)齊方式
            'quote',  // 引用
            'emoticon',  // 表情
            'image',  // 插入圖片
            'video',  // 插入視頻
            'code',  // 插入代碼
            'undo',  // 撤銷
            'redo'  // 重復(fù)
        ]
        $ed.html('{{ content|safe }}')
        editor.customConfig.uploadImgServer = '/homework/upload'
        editor.customConfig.uploadImgMaxSize = 3 * 1024 * 1024
        editor.create()
        // 初始化 textarea 的值
        document.getElementById('submit').addEventListener('click', function () {
            $text1.val(editor.txt.html())
        }, false)
    </script>

...

  • 需求(2)方案:對(duì)上傳的臨時(shí)圖片進(jìn)行保存歪今,上傳的圖片的名字進(jìn)行了md5處理后會(huì)在數(shù)據(jù)庫進(jìn)行保存,當(dāng)用戶提交了之后這條數(shù)據(jù)會(huì)被增加一個(gè)指向的houseworkid的值嚎幸,并且會(huì)對(duì)沒有hfk_workid的圖片進(jìn)行清理。
    app/main/view.py

...

# 保存圖片
@main.route('/homework/upload', methods=['POST'])
@login_required
def upload():
    data = []
    for i in request.files:
        t = request.files[i]
        name = hashlib.md5((i + current_user.id + str(datetime.now())).encode('utf-8')).hexdigest()
        sufix = i[i.rfind('.'):len(i)]
        path = 'app/static/upload/' + name + sufix
        t.save(path)
        data.append(url_for('static', filename='upload/' + name + sufix))
        picsave = PicSave(fk_sid=current_user.id, path=path)
        db.session.add(picsave)
        try:
            db.session.commit()
        except:
            db.session.rollback()
            flash('更新數(shù)據(jù)失敿男伞嫉晶!')
        json_data = {"errno": 0, "data": data}
    return json.dumps(json_data)

...

# 圖片處理代碼片段,從數(shù)據(jù)庫中找出沒有fk_workid的進(jìn)行刪除
    delpic = PicSave.query.filter_by(fk_sid=current_user.id,fk_workid=None).all()
    for p in delpic:
                os.remove(p.path)
                db.session.delete(p)
                db.session.commit()

...


演示

演示.gif
管理用戶1
管理用戶2
管理用戶3

源碼

homework_web_system

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子替废,更是在濱河造成了極大的恐慌箍铭,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎镣,死亡現(xiàn)場(chǎng)離奇詭異诈火,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)状答,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門冷守,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惊科,你說我怎么就攤上這事教沾。” “怎么了译断?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵授翻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我孙咪,道長(zhǎng)堪唐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任翎蹈,我火速辦了婚禮淮菠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荤堪。我一直安慰自己合陵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布澄阳。 她就那樣靜靜地躺著拥知,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碎赢。 梳的紋絲不亂的頭發(fā)上低剔,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音肮塞,去河邊找鬼襟齿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枕赵,可吹牛的內(nèi)容都是我干的猜欺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼拷窜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼开皿!你這毒婦竟也來了钓试?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤副瀑,失蹤者是張志新(化名)和其女友劉穎弓熏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糠睡,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挽鞠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狈孔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片信认。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖均抽,靈堂內(nèi)的尸體忽然破棺而出嫁赏,到底是詐尸還是另有隱情,我是刑警寧澤油挥,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布潦蝇,位于F島的核電站,受9級(jí)特大地震影響深寥,放射性物質(zhì)發(fā)生泄漏攘乒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一惋鹅、第九天 我趴在偏房一處隱蔽的房頂上張望则酝。 院中可真熱鬧,春花似錦闰集、人聲如沸沽讹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爽雄。三九已至,卻和暖如春洞坑,著一層夾襖步出監(jiān)牢的瞬間盲链,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工迟杂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人本慕。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓排拷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親锅尘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子监氢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,283評(píng)論 25 707
  • 1布蔗、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,988評(píng)論 3 119
  • 在我上大學(xué)之前,腦子里一直沒有抱怨的概念浪腐。中國(guó)式教育讓我覺得讀書就是應(yīng)該做的事纵揍,乖乖努力,老師親人就會(huì)無比疼愛议街。想...
    貓耳糖閱讀 433評(píng)論 1 2
  • 我出生在一個(gè)熱鬧的家庭泽谨,熱鬧的主要原因就源于我爸爸啦。你們一定很疑問特漩,爸爸的形象一直都是威嚴(yán)少語的吧雹。為什么...
    0許陽0閱讀 180評(píng)論 3 4