python - 比 locals() 或 dict(foo=foo) 更好的东西用于将上下文导出到模板引擎

标签 python django jinja2

所以,在关于#python 关于 why not to use locals 的简短讨论之后,我正在考虑如果没有 dict(foo=foo,bar=bar) 的重复性(即不干)(或使用文字语法( {})).

理想情况下,可以提交一份反射(reflect) this ecmascript harmony proposal 的 PEP(或已经存在的 PEP) . (我想强调它传达的 DRY 方面)。

那么,你有什么解决办法吗?我应该提交 PEP 吗?

最佳答案

以及元类/attrs 解决方案的变体:

def make_dict(name, bases, attrs):
    attrs.pop('__module__')
    attrs.pop('__metaclass__', None)  # not needed in python3
    return attrs

python 2:

class Context:
    __metaclass__ = make_dict

python 3:

class Context(metaclass=make_dict):
    a = 1
    b = 2

真的,这个问题刚刚变成了我玩元类的沙箱

关于python - 比 locals() 或 dict(foo=foo) 更好的东西用于将上下文导出到模板引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013982/

相关文章:

python - 通过列号对 Pandas 数据框进行子集化

python - Django Imagekit - 如何获取不在模板中的url?

python - 安装 Pygame 后 pygame.init() 显示为 undefined variable

python - 使用 Flask 设置 Chartkick 时遇到问题

python - 扩展 Jinja 的 {% trans %} 以使用 JavaScript 变量

python - 2D 数组中的 Matplotlib 4D 数据

django - 将当前类应用于 django 模板中的导航元素的干燥方法

django - 在 Django 中,当我调用 User.objects.create_user(用户名、电子邮件、密码) 时 - 为什么 post_save 被调用两次?

python - 无法访问属性返回的字典的 items()

python - 将 Jinja2 过滤器应用于每个渲染模板中的每个值