routes

from utils import log
from models import Message
from models import User


# 這個(gè)函數(shù)用來(lái)保存所有的 messages
message_list = []


def template(name):
    """
    根據(jù)名字讀取 templates 文件夾里的一個(gè)文件并返回
    """
    path = 'templates/' + name
    with open(path, 'r', encoding='utf-8') as f:
        return f.read()


def route_index(request):
    """
    主頁(yè)的處理函數(shù), 返回主頁(yè)的響應(yīng)
    """
    header = 'HTTP/1.x 210 VERY OK\r\nContent-Type: text/html\r\n'
    body = template('index.html')
    r = header + '\r\n' + body
    return r.encode(encoding='utf-8')


def route_login(request):
    """
    登錄頁(yè)面的路由函數(shù)
    """
    header = 'HTTP/1.x 210 VERY OK\r\nContent-Type: text/html\r\n'
    if request.method == 'POST':
        form = request.form()
        u = User(form)
        if u.validate_login():
            result = '登錄成功'
        else:
            result = '用戶名或者密碼錯(cuò)誤'
    else:
        result = ''
    body = template('login.html')
    body = body.replace('{{result}}', result)
    r = header + '\r\n' + body
    return r.encode(encoding='utf-8')


def route_register(request):
    """
    注冊(cè)頁(yè)面的路由函數(shù)
    """
    header = 'HTTP/1.x 210 VERY OK\r\nContent-Type: text/html\r\n'
    if request.method == 'POST':
        form = request.form()
        u = User(form)
        if u.validate_register():
            u.save()
            result = '注冊(cè)成功<br> <pre>{}</pre>'.format(User.all())
        else:
            result = '用戶名或者密碼長(zhǎng)度必須大于2'
    else:
        result = ''
    body = template('register.html')
    body = body.replace('{{result}}', result)
    r = header + '\r\n' + body
    return r.encode(encoding='utf-8')


def route_message(request):
    """
    消息頁(yè)面的路由函數(shù)
    """
    log('本次請(qǐng)求的 method', request.method)
    if request.method == 'POST':
        form = request.form()
        msg = Message(form)
        log('post', form)
        message_list.append(msg)
        # 應(yīng)該在這里保存 message_list
    header = 'HTTP/1.x 200 OK\r\nContent-Type: text/html\r\n'
    # body = '<h1>消息版</h1>'
    body = template('html_basic.html')
    msgs = '<br>'.join([str(m) for m in message_list])
    body = body.replace('{{messages}}', msgs)
    r = header + '\r\n' + body
    return r.encode(encoding='utf-8')


def route_static(request):
    """
    靜態(tài)資源的處理函數(shù), 讀取圖片并生成響應(yīng)返回
    """
    filename = request.query.get('file', 'doge.gif')
    path = 'static/' + filename
    with open(path, 'rb') as f:
        header = b'HTTP/1.x 200 OK\r\nContent-Type: image/gif\r\n\r\n'
        img = header + f.read()
        return img


# 路由字典
# key 是路由(路由就是 path)
# value 是路由處理函數(shù)(就是響應(yīng))
route_dict = {
    '/': route_index,
    '/login': route_login,
    '/register': route_register,
    '/messages': route_message,
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Application和Activity,Service一樣是Android框架的一個(gè)系統(tǒng)組件,當(dāng)Android程...
    fullbook閱讀 742評(píng)論 0 0
  • 人生就是一個(gè)不斷跟過去的自己揮手告別,獨(dú)立成長(zhǎng)的過程。 我們總覺得過去的自己很傻,其實(shí)再過一段時(shí)間,你就會(huì)發(fā)現(xiàn),現(xiàn)...
    Smile_Zhangjie閱讀 201評(píng)論 0 3
  • 文/小曉歌 “安靈,我們分手吧?!?幾聲電話鈴聲響過后,她聽到的第一句話便是盛鈺那熟悉的有磁性的聲音。 “嗯。” ...
    小曉歌閱讀 1,157評(píng)論 8 11
  • 我們相識(shí)從20世紀(jì)到21世紀(jì),我們的關(guān)系已經(jīng)到了跨世紀(jì)的階段,我還希望我們能夠一起渡過21世紀(jì),我知道這也不可能了...
    光沐思維閱讀 302評(píng)論 0 1
  • 暮色下的鐘塔,臨摹自飛樂鳥著的《風(fēng)景繪》。 一、線稿 這幅畫在《風(fēng)景繪》的第一步驟上的線稿,比例有一點(diǎn)問題。最后只...
    墨珖閱讀 4,073評(píng)論 8 40

友情鏈接更多精彩內(nèi)容