【python socket编程】—— 6.简单实现render_template和密码hash

  • Post author:
  • Post category:python



前文:

【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")

返回的结果是一样。