前文:
【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")
返回的结果是一样。