<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[success] # 用來處理用戶信息 ~~~ 1.用來保存當前訪問 用戶的session = {} 2.random_str 生成隨機的sessionid 3.template 讀取html文件 4.current_user 判斷用戶是否登錄 5.route_index 請求頭+body + username判斷+響應返回 6.response_with_headers 定制響應頭 7.route_login 處理用戶登錄 8.route_register 用戶注冊 ~~~ >[danger] ##### 代碼 ~~~ import random from models import User from utils import log from utils import template # 這個函數用來保存所有的 messages message_list = [] # 用來保存當前訪問 用戶的session session = {} # 生成一個加密 session id def random_str(): seed = 'abcdefjsad89234hdsfkljasdkjghigaksldf89weru' s = '' for i in range(16): random_index = random.randint(0, len(seed) - 2) s += seed[random_index] return s def current_user(request): ''' 獲取cookies中保存的sessionid 然后從字典中匹配對應的信息 ''' session_id = request.cookies.get('user', '') username = session.get(session_id, '游客') if username is not "游客": username = User.find(username).username return username def route_index(request): """ 主頁的處理函數, 返回主頁的響應 請求頭+body + username判斷+響應返回 """ header = 'HTTP/1.1 210 VERY OK\r\nContent-Type: text/html\r\n' body = template('index.html') username = current_user(request) body = body.replace('{{username}}', username) r = header + '\r\n' + body return r.encode(encoding='utf-8') # 定制響應頭 def response_with_headers(headers, status_code=200): """ Content-Type: text/html Set-Cookie: user=gua """ header = 'HTTP/1.1 {} VERY OK\r\n'.format(status_code) header += ''.join(['{}: {}\r\n'.format(k, v) for k, v in headers.items()]) return header def redirect(location, headers=None): if headers is None: headers = { 'Content-Type': 'text/html', } headers['Location'] = location # 302 狀態碼的含義, Location 的作用 header = response_with_headers(headers, 302) r = header + '\r\n' + '' return r.encode(encoding='utf-8') def route_login(request): headers = { 'Content-Type': 'text/html', } username = current_user(request) if request.method == "POST": # 獲取所有post 請求的參數 form = request.form() # 調用 User 函數 u = User(form) if u.validate_login(): # 查詢用戶名密碼是否存在 user = User.find_by(username=u.username) session_id = random_str() session[session_id] = user.id log('userid',user.id) headers['Set-Cookie'] = 'user={}'.format(session_id) # headers['Set-Cookie'] = 'user_id={}'.format(user.id) result = '登錄成功' log('headers response', headers) return redirect('/', headers) else: result = '用戶名或者密碼錯誤' else: result = '' body = template('login.html',username = username) header = response_with_headers(headers) r = header + '\r\n' + body # log('login', r) return r.encode(encoding='utf-8') def route_register(request): """ 注冊頁面的路由函數 """ header = 'HTTP/1.1 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 = '注冊成功<br> <pre>{}</pre>'.format(User.all()) else: result = '用戶名或者密碼長度必須大于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_static(request): """ 靜態資源的處理函數, 讀取圖片并生成響應返回 """ filename = request.query.get('file', 'doge.gif') path = 'static/' + filename with open(path, 'rb') as f: header = b'HTTP/1.1 200 OK\r\nContent-Type: image/gif\r\n\r\n' img = header + f.read() return img route_dict = { '/': route_index, '/login': route_login, '/register': route_register, } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看