小编lyc*_*ian的帖子

Mako模板变量名称

是否可以在渲染之前获取Mako模板中的变量名称?

from mako.template import Template
bar = Template("${foo}")

# something like:
# >> print bar.fields()
# ['foo']
Run Code Online (Sandbox Code Playgroud)

使用案例:

我们有配置文件,我们指定数据库中的元数据以显示在网页上.客户端可以选择几百个不同的命名元数据中的一个.客户端可以配置N个插槽,但我们事先并不知道特定客户端希望在表单上填写哪些元数据.因为如果在渲染表单时我们需要提前知道我们需要为此客户端模板传递哪些变量名称.

我们曾想过拥有一个包含所有可能值的一致字典并在每次传递它但由于新的可用字段经常添加到客户端可以选择的基础可用元数据池中而无法工作.

因此,我们希望使用Mako来模拟配置文件,但我无法弄清楚如何使用模板中的字段值来确定是否可以构建一个完整形式的Context以传递给模板.

python templates mako

6
推荐指数
1
解决办法
505
查看次数

如何在Python中解密AWS Ruby客户端加密

AWS的S3 SDK for Ruby允许对文件进行客户端("信封")加密.它是客户端密钥的AES CBC/ECB加密的组合,其中包络密钥和初始化向量存储在元数据中.

我有一个Ruby开发人员,它已经加密了S3存储桶中的各种文件,我需要使用Python检索和解密.Python S3 AWS SDK目前没有此客户端功能.

假设使用encryption_keyRuby bucket.writeS3 API 的参数加密文件:

#!/usr/bin/ruby
# coding: utf-8

require 'aws-sdk'
require 'openssl'

access_key = '<aws_access_key>'
secret_access_key = '<secret_access_key>'
encryption_key = "passwordpassword"

s3 = AWS::S3.new
storage_host = "our_bucket"
storage_path = "prod/master_report/test.txt"
bucket_obj = s3.buckets[storage_host].objects[storage_path]
bucket_obj.write(file: 'test.txt', encryption_key: encryption_key)
Run Code Online (Sandbox Code Playgroud)

有没有办法用Python解密文件而不是使用Ruby SDK?

ruby python amazon-s3 encryption-symmetric aws-sdk

5
推荐指数
1
解决办法
1431
查看次数

Python:在哪里查找导入以获取异常

如何找到定义自定义异常的位置,以便您可以导入它.在我的代码中抛出的错误的堆栈跟踪中,我收到NoSuchElementException.我想抓住这个特定的例外,但我找不到从哪里导入它.有没有办法确定从堆栈跟踪导入什么?

Traceback (most recent call last):
  File "/home/ubuntu/webapps/tablecloth/src/tablecloth/apps/atsa/adaptor.py", line 266, in login
    welcome_field = driver.find_element_by_class_name(self.welcome_id)
  File "/home/ubuntu/webapps/tablecloth/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 342, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
  File "/home/ubuntu/webapps/tablecloth/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 680, in find_element
    {'using': by, 'value': value})['value']
  File "/home/ubuntu/webapps/tablecloth/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 165, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/webapps/tablecloth/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 158, in check_response
    raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: u'Unable to locate element: {"method":"class name","selector":"userName"}' ; Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ 
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
1
解决办法
82
查看次数