前文:【python socket编程】—— 5.实现cookie和session
在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
模块中的Environment
和FileSystemLoader
,用os.path
获取到模板的存放位置templates_path
,将其作为参数传给FileSystemLoader
实例化出一个loader
对象,再将loader
传递给Environment
实例一个env
对象,env
对象的get_template
方法获取模板temp
,调用temp.render
返回渲染后的内容,使用**kwargs
来传参数给模板。
密码的加密,可以使用hashlib
这个库,可以实现md5
、sha1
、sha256
等多种hash
方式,例如:
import hashlib
def generate_hash(string):
new_string = string.encode('ascii')
sha256 = hashlib.sha256()
sha256.update(new_string)
return sha256.hexdigest()
传入的string
,generate_hash
会返回sha256
加密之后的字符串,值得一提的是sha256.update(new_string)
的update
方法,sha256.update("Hello World")
和依次sha256.update("Hello ")
、sha256.update("World")
返回的结果是一样。