资讯专栏INFORMATION COLUMN

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

caozhijian / 1843人阅读

摘要:前文编程实现和在中有函数,用于解析模板,现在我们来简单实现它。密码的加密,可以使用这个库,可以实现等多种方式,例如传入的,会返回加密之后的字符串,值得一提的是的方法,和依次返回的结果是一样。

前文:【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模块中的EnvironmentFileSystemLoader,用os.path获取到模板的存放位置templates_path,将其作为参数传给FileSystemLoader实例化出一个loader对象,再将loader传递给Environment实例一个env对象,env对象的get_template方法获取模板temp,调用temp.render返回渲染后的内容,使用**kwargs来传参数给模板。


密码的加密,可以使用hashlib这个库,可以实现md5sha1sha256等多种hash方式,例如:

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41360.html

相关文章

  • python socket编程】—— 5.实现cookiesession

    摘要:前文编程实现函数的实现很简单,在服务器返回的响应中,里增加,浏览器接受到中的,下次访问这个网站的请求中就会带上这个。此时服务端解析,根据就知道当前用户是登陆状态的。显然,直接在里写用户的是不安全的。下一篇文章编程简单实现和密码 前文:【python socket编程】—— 4.实现redirect函数 cookie的实现很简单,在服务器返回的响应中,header里增加Set-Cook...

    lykops 评论0 收藏0
  • 10.注册登录功能实现(3)—— 注册数据写入数据库

    摘要:现在数据获取到了,提示也有了,我们需要把注册的数据写入到数据库,这一步很简单,直接使用之前提到过的方法,但是我们不能直接把明文密码写入到数据库中,那样做是十分不安全的,我们需要将其加密之后再写进去,具体是用到中的这个函数,将字符串变成值。 现在数据获取到了,提示也有了,我们需要把注册的数据写入到数据库,这一步很简单,直接使用之前提到过的方法,但是我们不能直接把明文密码写入到数据库中,那...

    zhangqh 评论0 收藏0
  • 通过Python入门区块链

    摘要:通过入门区块链本文翻译自的文章原文地址区块链可能是继互联网之后最重大和最具突破性的技术。先不管对比特币和其他加密货币价格的疯狂行情,本文旨在帮助读者入门区块链技术。 通过Python入门区块链 本文翻译自 Adil Moujahid 的文章 A Practical Introduction to Blockchain with Python原文地址:http://adilmoujahi...

    andong777 评论0 收藏0
  • 通过Python入门区块链

    摘要:通过入门区块链本文翻译自的文章原文地址区块链可能是继互联网之后最重大和最具突破性的技术。先不管对比特币和其他加密货币价格的疯狂行情,本文旨在帮助读者入门区块链技术。 通过Python入门区块链 本文翻译自 Adil Moujahid 的文章 A Practical Introduction to Blockchain with Python原文地址:http://adilmoujahi...

    CloudDeveloper 评论0 收藏0
  • python大佬养成计划----Jinja2模板

    摘要:模板默认保存在目录。在使用函数调用模板文件时,需要通过关键字参数指定值。模板中使用宏来防止代码冗余。当一个模板被另外的模板继承时,可以通过访问父模板的资源。 什么是Jinja2 Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来...

    gaomysion 评论0 收藏0

发表评论

0条评论

caozhijian

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<