Python學習筆記-第19天:實戰(zhàn)練習(6)

第十九天 實戰(zhàn)練習(6)

今天計劃用Python繼續(xù)一個web開發(fā)的實戰(zhàn)項目練習攒磨,學習項目及練習源碼地址:
GitHub源碼

處理用戶登錄session

在response中間件中加入處理用戶登錄的session,這樣可以方便的傳入用戶登錄的相關(guān)信息到模板渲染粱快。

session = await get_session(request)
uid = session.get("uid")
r['is_login'] = False if not uid else True
resp = web.Response(body=app['__templating__'].get_template(template).render(**r).encode('utf-8'))
resp.content_type = 'text/html;charset=utf-8'
return resp

模板中簡單應(yīng)用:

{% if is_login %}
<li class="nav-item">
    <a class="nav-link" href="javascript:void(0);" id="u_logout">登出</a>
</li>
<li class="nav-item">
    <a class="nav-link" href="/b/write">寫文章</a>
</li>

{% else %}
<li class="nav-item">
    <a class="nav-link" href="/u/login">登錄</a>
</li>
<li class="nav-item">
    <a class="nav-link" href="/u/register">注冊</a>
</li>

{% endif %}

文章的保存和更新

@post('/b/{id}')
async def save_content(*,id,title,content,request):
    if not title or not title.strip():
        raise APIValueError('title')
    if not content or not content.strip():
        raise APIValueError('content')
    session = await get_session(request)
    uid = session.get('uid')
    if not uid:
        return {'success':False,'msg':'please login.'}
    if id == '0':
        blog = Blog(
            user_id = uid,
            user_name = '',
            user_image = '',
            name = title,
            summary = '',
            content = content
        )
        await blog.save()
        return {'success':True,'blog_id':blog.id}
    else:
        blogs = await Blog.findAll('id=?', [id])
        if len(blogs) != 1:
            raise APIError('update:failed', 'id', 'id is not find.')
        blog = blogs[0]
        blog.name = title
        blog.content = content
        await blog.update()
        return {'success':True,'blog_id':blog.id}

在這里只是簡單的驗證用戶是否登錄坦胶,實際中,應(yīng)該防止用戶通過非法手段狂寫入文章數(shù)據(jù)刽宪。

文章列表的獲取和展現(xiàn)

@get('/')
async def index(request):
    blogs = await Blog.findAll(limit=5)
    return {
        '__template__':'index.html',
        'blogs': blogs
    }

前端渲染

{% for blog in blogs %}
<div class="ll-card">
    <div class="row">
        <div class="col-lg-2 col-md-3 col-sm-12 ll-card-image">
            <a href="#">
                <img src="/static/img/list-image.jpg" class="img-fluid" alt="Responsive image">
            </a>
        </div>
        <div class="col-lg-10 col-md-9 col-sm-12 ll-card-main">
            <h3 class="ll-card-main-title"><a href="/a/{{blog.id}}">{{ blog.name }}</a></h3>
            <div class="ll-card-tag">
                <div><i class="fa fa-clock-o"></i> 2017-10-01 18:00</div>
                <div><i class="fa fa-eye"></i> 156</div>
                <div><i class="fa fa-commenting-o"></i> 2</div>
            </div>
            <p class="ll-card-main-info">{{ blog.sumary }}</p>
            <p class="ll-card-more"><a href="/a/{{blog.id}}">閱讀更多...</a></p>
        </div>
    </div>
</div>
{% endfor %}

文章詳情

@get('/a/{id}')
async def detail(id,request):
    blogs = await Blog.findAll('id=?', [id],limit=1)

    return {
        '__template__':'detail.html',
        'blog': blogs[0]
    }

前端展現(xiàn)

<h2 class="ll-artical-title">{{blog.name}}</h2>
    <div class="ll-card-tag">
        <div class="">
            <img src="img/list-image.jpg" class="img-fluid rounded-circle" alt="Responsive image">
            <span class="text-success">海哥</span>
        </div>
        <div><i class="fa fa-clock-o"></i> 2017-10-01 18:00</div>
        <div><i class="fa fa-eye"></i> 156</div>
        <div><i class="fa fa-commenting-o"></i> 2</div>
    </div>
    <div class="ll-artical">
        {{blog.content | safe}}
    </div>

一個小坑: 要展現(xiàn)保存的富文本內(nèi)容,需要要{{blog.content | safe}}

自此界酒,文章的增圣拄,刪,查毁欣,改已經(jīng)全部完成庇谆,需要豐富文章的內(nèi)容,如:查看次數(shù)凭疮,作者信息饭耳,文章配圖顯示等。

如何將張貼到富文本內(nèi)容的圖片連接轉(zhuǎn)存到本地执解,過濾粘貼內(nèi)容的外部連接等寞肖,是需要慢慢完成的工作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衰腌,一起剝皮案震驚了整個濱河市新蟆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桶唐,老刑警劉巖栅葡,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茉兰,死亡現(xiàn)場離奇詭異尤泽,居然都是意外死亡,警方通過查閱死者的電腦和手機规脸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門坯约,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莫鸭,你說我怎么就攤上這事闹丐。” “怎么了被因?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵卿拴,是天一觀的道長。 經(jīng)常有香客問我梨与,道長堕花,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任粥鞋,我火速辦了婚禮缘挽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己壕曼,他們只是感情好苏研,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腮郊,像睡著了一般摹蘑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轧飞,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天纹蝴,我揣著相機與錄音,去河邊找鬼踪少。 笑死塘安,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的援奢。 我是一名探鬼主播兼犯,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼集漾!你這毒婦竟也來了切黔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤具篇,失蹤者是張志新(化名)和其女友劉穎纬霞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驱显,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡诗芜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了埃疫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伏恐。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栓霜,靈堂內(nèi)的尸體忽然破棺而出翠桦,到底是詐尸還是另有隱情,我是刑警寧澤胳蛮,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布销凑,位于F島的核電站,受9級特大地震影響仅炊,放射性物質(zhì)發(fā)生泄漏斗幼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一茂洒、第九天 我趴在偏房一處隱蔽的房頂上張望孟岛。 院中可真熱鬧瓶竭,春花似錦、人聲如沸渠羞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽次询。三九已至荧恍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屯吊,已是汗流浹背送巡。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盒卸,地道東北人骗爆。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像蔽介,于是被迫代替她去往敵國和親摘投。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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

  • 第十七天 實戰(zhàn)練習(4) 今天計劃用Python繼續(xù)一個web開發(fā)的實戰(zhàn)項目練習虹蓄,學習項目及練習源碼地址:GitH...
    6d1bf2ffc4f3閱讀 695評論 0 50
  • 分析論壇項目 數(shù)據(jù)庫:總共兩個users:用戶數(shù)據(jù)薇组,管理用戶資料信息外臂;用戶名;密碼頭像comment:評論數(shù)據(jù)律胀,管...
    果木山閱讀 360評論 0 0
  • 4. Web集成 4.1. Web提供的全局變量 Web集成模塊向模板提供web標準的變量宋光,做如下說明 reque...
    西漠閱讀 4,470評論 0 0
  • 二,確定招標方式 (一)公開招標 依法必須招標項目中有下列情形的應(yīng)當公開招標:或 性質(zhì):國家重點建設(shè)工程累铅、省級人民...
    天然洲閱讀 150評論 0 1
  • 從iOS開發(fā)轉(zhuǎn)至iOS測試開發(fā)已經(jīng)有四個月了跃须,從最初連Appium是什么都不知道,到果斷舍棄娃兽,這是一邊學一邊實踐,...
    沈宥閱讀 527評論 1 7