【python socket編程】—— 6.簡單實現render_template和密碼hash

前文:【python socket編程】—— 5.實現cookie和sessionpython


Flask中有render_template函數,用於解析jinja2模板,如今咱們來簡單實現它。代碼以下:編程

from os import path
from jinja2 import Environment, FileSystemLoader


project_path = path.abspath(path.join(path.dirname(__file__), '..'))
templates_path = '{}/templates'.format(project_path)
loader = FileSystemLoader(templates_path)
env = Environment(loader=loader)

def render_template(template, **kwargs):
    temp = env.get_template(template)
    return temp.render(**kwargs)

首先須要導入jinja2模塊中的EnvironmentFileSystemLoader,用os.path獲取到模板的存放位置templates_path,將其做爲參數傳給FileSystemLoader實例化出一個loader對象,再將loader傳遞給Environment實例一個env對象,env對象的get_template方法獲取模板temp,調用temp.render返回渲染後的內容,使用**kwargs來傳參數給模板。segmentfault


密碼的加密,能夠使用hashlib這個庫,能夠實現md5sha1sha256等多種hash方式,例如:cookie

import hashlib

def generate_hash(string):
    new_string = string.encode('ascii')
    sha256 = hashlib.sha256()
    sha256.update(new_string)
    return sha256.hexdigest()

傳入的stringgenerate_hash會返回sha256加密以後的字符串,值得一提的是sha256.update(new_string)update方法,sha256.update("Hello World")和依次sha256.update("Hello ")sha256.update("World")返回的結果是同樣。session

相關文章
相關標籤/搜索