标签: jinja2

如何获取jinja 2模板中所有变量的列表

我试图获取模板中所有变量和块的列表.我不想创建自己的解析器来查找变量.我尝试使用以下代码段.

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('gummi', 'templates'))
template = env.get_template('chat.html')
Run Code Online (Sandbox Code Playgroud)

template.blocks 是键是块的dict,如何获取块内的所有变量?

jinja2

27
推荐指数
4
解决办法
2万
查看次数

定期更新并从Flask中呈现值

我想动态显示我的CPU使用情况.我不想重新加载页面以查看新值.我知道如何在Python中获得CPU使用率.现在我用值渲染一个模板.如何使用Flask中的值不断更新页面?

@app.route('/show_cpu')
def show_cpu():
    cpu = getCpuLoad()
    return render_template('show_cpu.html', cpu=cpu)
Run Code Online (Sandbox Code Playgroud)

javascript python jinja2 flask

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

如何调试Jinja2模板?

我正在使用jinja2模板系统进入django.这真的很快,我很喜欢它.不过,我调试模板时遇到了一些问题:如果我在模板中犯了一些错误(错误的标签,坏的filtername,坏的结尾......),我根本没有关于这个错误的信息.

例如,在django视图中,我写这个:

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('main', 'templates'))

def jinja(req):
    template = env.get_template('jinja.html')
    output=template.render(myvar='hello')
    return HttpResponse(output)
Run Code Online (Sandbox Code Playgroud)

我写了一个jinja2模板:jinja.html:

{{myvar|notexistingfilter()}} Jinja !
Run Code Online (Sandbox Code Playgroud)

注意,我故意生成一个不存在的过滤器来生成错误:

我期待像"notexistingfilter()未定义"这样的东西,但我只有一个简单的黑色白色追溯(不是通常的django调试消息):

Traceback (most recent call last):

  File "/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py", line 279, in run

    self.result = application(self.environ, self.start_response)

  File "/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py", line 651, in __call__
    return self.application(environ, start_response)


  File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 241, in __call__
    response = self.get_response(request)

  File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 134, in get_response

    return self.handle_uncaught_exception(request, resolver, exc_info)

  File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 154, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)


  File "/usr/local/lib/python2.6/dist-packages/django/views/debug.py", line …
Run Code Online (Sandbox Code Playgroud)

python django jinja2

26
推荐指数
2
解决办法
2万
查看次数

如何在jinja2模板引擎中保护csrf_token?

在Django模板中,我使用了:

<form action="/user" method="post">{% csrf_token %}
    {{ form.as_p|safe }}
    <input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

但是当我改为jinja2 template engine:

 Encountered unknown tag 'csrf_token'
Run Code Online (Sandbox Code Playgroud)

我的问题:csrf_token protectionjinja2需要?

如果需要,怎么做?

提前致谢!

django csrf jinja2

26
推荐指数
2
解决办法
7967
查看次数

如何在Jinja2中使用正则表达式?

我是Jinja2的新手,到目前为止,我已经能够完成我想要的大部分工作.但是,我需要使用正则表达式,我似乎无法在文档或谷歌上找到任何东西.

我想在Javascript中创建一个模仿此行为的宏:

function myFunc(str) {
    return str.replace(/someregexhere/, '').replace(' ', '_');
}
Run Code Online (Sandbox Code Playgroud)

这将删除字符串中的字符,然后用下划线替换空格.我怎么能用Jinja2做到这一点?

regex jinja2

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

如何从Ansible中的安装模块输出中获取列表的第一个元素?

我从设置模块收到以下数据:

"ansible_nodename": "3d734bc2a391",
"ansible_os_family": "RedHat",
"ansible_pkg_mgr": "yum",
"ansible_processor": [
  "AuthenticAMD",
  "AMD PRO A10-8700B R6, 10 Compute Cores 4C+6G"
],
"ansible_processor_cores": 1,
"ansible_processor_count": 1,
"ansible_processor_threads_per_core": 1,
Run Code Online (Sandbox Code Playgroud)

我想检索第一个值ansible_processor并在Jinja2模板中使用它.

如果我使用{{ ansible_processor }}它,它给了我两个价值观:

"AuthenticAMD",
"AMD PRO A10-8700B R6, 10 Compute Cores 4C+6G"
Run Code Online (Sandbox Code Playgroud)

但我只想要第一个.

jinja2 ansible ansible-template ansible-facts

26
推荐指数
1
解决办法
4万
查看次数

Jinja2模板语言是否具有'here'(当前目录)的概念?

Jinja2是否支持模板相对路径,例如%(here)s/other/template.html,包含相对于当前模板在文件系统中的位置的其他模板?

python jinja2

25
推荐指数
3
解决办法
2万
查看次数

如果我们传入模板中不存在的变量,则在jinja中引发异常

当我们传递模板中不存在的变量时,是否有一种方法让jinja2引发异常?

PS:当模板中存在变量但未传递变量时,这与引发异常不同(或相反).为此,我使用"undefined = StrictUndefined"

jinja2

25
推荐指数
3
解决办法
8873
查看次数

将列表变量附加到Ansible中的另一个列表

是否可以将变量列表附加到ansible的静态列表中?

我可以将整个列表定义为变量:

my_list:
  - 1
  - 2
  - 3
Run Code Online (Sandbox Code Playgroud)

然后在剧本中使用它

something: {{my_list}}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找到如何做到这一点(伪代码):

list_to_append: 
  - 3
  - 4
Run Code Online (Sandbox Code Playgroud)

然后在剧本中:

something:
  - 1
  - 2
  - {{append: list_to_append}}
Run Code Online (Sandbox Code Playgroud)

如果这实际上是不可能的,你会对我的用例有什么建议?

我有一个参数中的项目列表,但其中一些是optional并且应该可以使用变量进行修改.

换句话说:我有default values+ optional values可以或不可以通过变量添加.

optional values事先不知道,我可以添加1,2或其中的100个,所以它们不是静态的.

我基本上有一个默认静态列表++一个可附加的可配置变量列表.

编辑:我发现了这个,但它只适用于with_items,我需要在普通参数中:

  with_flattened:
   - "{{list1}}"
   - "{{list2}}"
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-playbook

25
推荐指数
1
解决办法
4万
查看次数

UndefinedError:'user'未定义

我目前正在开发一个Flask应用程序(已经过去一年),我遇到了一个相当......奇怪的错误.我有一些文件总是包含在我的Jinja2模板(navbars)中,它们使用用户的名字和头像.因此,每次我渲染模板时,我都会将其传递给用户.我最近注意到我的prod服务器上有错误:

<img alt="image" class="img-circle" src="{{ user.image }}" style="width: 48px;"/>
  File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 397, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'user' is undefined
Run Code Online (Sandbox Code Playgroud)

这是我的一个导航栏.呈现此模板的方法使用此方法:

@mod.route('/broken_pus', methods=['POST', 'GET'])
def view_broken_pus():
    return render_template("view_broken_pus.html", user=g.user, urls_for_active_clients=DeletedURLs.objects()[0].urls_for_active_clients, other_urls=DeletedURLs.objects()[0].other_urls)
Run Code Online (Sandbox Code Playgroud)

如您所见,我传递了user = g.user.我在我的网站的每个视图上都这样做.它适用于所有地方,除了这个方法,这是非常小的.我有很多其他类似的路线,只有一个渲染模板,所以我没有得到什么问题.

我也得到了另一种方法,更大,以前总是有效:

@mod.route('/users/add', methods=['GET', 'POST'])
@requires_roles("admin", "project-leader")
def add():
    """
    Method adding a new user.
    """
    # We do not use WTForms there since we need custom checkboxes for the role
    # Instead we use basic HTML and treat the checkboxes here
    if request.method == …
Run Code Online (Sandbox Code Playgroud)

python nginx jinja2 flask uwsgi

24
推荐指数
1
解决办法
2767
查看次数