我想在jinja2中有一个自定义过滤器,如下所示:
{{ my_list|my_real_map_filter(lambda i: i.something.else)|some_other_filter }}
Run Code Online (Sandbox Code Playgroud)
但是当我实现它时,我得到了这个错误:
TemplateSyntaxError: expected token ',', got 'i'
Run Code Online (Sandbox Code Playgroud)
看来jinja2的语法不允许lambdas作为参数?有一些不错的解决方法吗?现在,我在python中创建lambda然后将其作为变量传递给模板,但我宁愿能够在模板中创建它.
我最近从PyJWT 0.4.1升级到1.0.1,我无法弄清楚如何验证使用公钥签名的JWT.
我的代码看起来像这样:
import jwt
cert_string = "-----BEGIN CERTIFICATE-----\nMIICITCCAYqgAwIBAgIIBEsUSxL..."
token_string = "eyJhbGciOiJSUzI1NiIsImtpZCI6I..."
jwt.decode(token_string, cert_string, algorithms=['RS256'])
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
File "<stdin>", line 1, in <module>
File "~/.virtualenvs/project/lib/python2.7/site-packages/jwt/api.py", line 117, in decode
key, algorithms, **kwargs)
File "~/.virtualenvs/project/lib/python2.7/site-packages/jwt/api.py", line 176, in _verify_signature
key = alg_obj.prepare_key(key)
File "~/.virtualenvs/project/lib/python2.7/site-packages/jwt/algorithms.py", line 165, in prepare_key
key = load_pem_public_key(key, backend=default_backend())
File "~/.virtualenvs/project/lib/python2.7/site-packages/cryptography/hazmat/primitives/serialization.py", line 24, in load_pem_public_key
return backend.load_pem_public_key(data)
File "~/.virtualenvs/project/lib/python2.7/site-packages/cryptography/hazmat/backends/multibackend.py", line 285, in load_pem_public_key
return b.load_pem_public_key(data)
File "~/.virtualenvs/project/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 716, in load_pem_public_key
self._handle_key_loading_error()
File "~/.virtualenvs/project/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 912, in _handle_key_loading_error
raise …Run Code Online (Sandbox Code Playgroud) 我们在开发和测试数据库中有一些mysql视图,这些视图是在迁移过程中通过执行(sql)语句创建的.Rails的默认schema.rb将这些视图创建为表.当config.active_record.schema_format设置为:sql时,根本不会创建这些视图.
是否有设置确保在测试数据库中重新创建这些视图?
如果没有,有人可以建议解决方法吗?
注意,show create table这个视图是这样的:
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `sales_reports` AS select ...
Run Code Online (Sandbox Code Playgroud)
并且视图包含在 show tables
经过调查,看起来activerecord故意这样做.
active_record/connection_adapters/mysql_adapter.rb
有这么好的理由吗?
我有一个继承自ActiveRecord :: Base的Commentable类和一个继承自Commentables的Event类.
我已经覆盖了这两个类中的destroy方法,并且Event.distroy调用了super.然而,一些意外的事情发生了.具体而言,将删除事件的has_and_belongs_to_many关联.我认为这种情况正在发生,因为一些模块被包含在Commentables和Event类之间,但不确定是否有办法阻止它.
这是简化的代码:
class Commentable < ActiveRecord::Base
has_many :comments
def destroy
comments.destroy_all
self.deleted = true
self.save!
end
end
class Event < Commentable
has_and_belongs_to_many :practitioners, :foreign_key => "commentable_id"
def destroy
#some Event specific code
super
end
end
Run Code Online (Sandbox Code Playgroud)
我不想从数据库中删除行,只需设置一个"已删除"标志.我也不想删除任何关联.但是,在Event.destroy和Commentable.destroy之间的某处,其他一些rails代码会破坏has_and_belongs_to_many表中的记录.
知道为什么会这样,以及如何阻止它?