我正在使用杜松子酒 Gonic 及其功能。一种是 html 模板渲染。因此,本着 DRY 的精神,我想创建一个base.html包含所有常见 html 标签等的模板,并为不同的页面主体提供一个插槽。
从本质上来说,这就是base.html
{{define "base"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
{{ template "main" . }}
</body>
</html>
{{end}}
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个名为的“子”模板home.html:
{{template "base" .}}
{{define "main"}}
<div class="container mt-5">
Hello
</div>
{{end}}
Run Code Online (Sandbox Code Playgroud)
我按照这个页面上的这个精彩指南进行操作,它很有魅力。
但是当我尝试添加另一个具有不同主体的页面时,例如subpage.html:
{{template "base" .}}
{{define "main"}}
<div class="container">
<div>
<h2>This page is still in progress</h2>
</div>
</div>
{{end}}
Run Code Online (Sandbox Code Playgroud)
LoadHTMLFilesgins或选取的最后一个模板LoadHTMLGlob将显示在每个页面上。在这种情况下,这就是subpage.html内容。我该如何解决。默认情况下是否有可能实现这种行为?
我想将人名存储在 MySQL 数据库中。因为数据是敏感信息,我想用 AES 对其进行加密。我正在使用PyCrypto AES模块。我正在使用的代码是:
class AESCipher(object):
def __init__(self, key):
self.bs = 64
self.key = hashlib.sha256(key.encode()).digest()
def encrypt(self, raw):
raw = self._pad(raw)
iv = Random.new().read(AES.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return base64.b64encode(iv + cipher.encrypt(raw))
def decrypt(self, enc):
enc = base64.b64decode(enc)
iv = enc[:AES.block_size]
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return self._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8')
def _pad(self, s):
return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)
@staticmethod
def _unpad(s):
return s[:-ord(s[len(s)-1:])]
operator = AESCipher(data_encryption_key)
Run Code Online (Sandbox Code Playgroud)
用于加密的密钥是一个随机的长字符串。 …