标签: jinja2

jinja2:html转义变量

我如何在jinja2中html-escape危险的unsanitized输入?

我可以在模板中执行它还是必须在python代码中完成?

我有一个可能包含da <ngero> u&s字符的变量.我如何在jinja2中逃脱它

python security escaping jinja2

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

Jinja-like JS模板语言

我真的很喜欢django/jinja2模板语言.它们的语法非常简单,而且功能多样.在javascript中是否有类似于语法和功能的内容,或者如果不是两者,至少在功能方面.

我查看了下划线,jquery模板和小胡子模板,但它们似乎都不是我想要的.

补充说明

我认为所有的库(我看过)胡子是最好的,但我不喜欢语法.例如这个胡子模板

{{#people}}
    {{name}}
{{/people}}
{{^people}}
    No people :(
{{/people}}
Run Code Online (Sandbox Code Playgroud)

与django的模板相比:

{% for person in people %}
    {{ person.name }}
{% empty %}
     No people :(
{% endfor %}`
Run Code Online (Sandbox Code Playgroud)

应用过滤器也是一样的.例如:

{{#filter}}{{value}}{{/filter}}
Run Code Online (Sandbox Code Playgroud)

VS

{{ value|filter }}
Run Code Online (Sandbox Code Playgroud)

我认为django/jinja2方法更干净,感觉更自然.

那么,是否有任何js库的模板与django/jinja非常相似?如果没有,我想我必须忍受muschache(或者其他一些好的js库 - 我愿意接受建议),但它感觉不对.

谢谢.

javascript jquery template-engine language-comparisons jinja2

21
推荐指数
3
解决办法
9895
查看次数

如何在jinja2模板中重复一个块?

我正在使用Jinja2作为通过Python脚本生成的静态HTML网站的模板引擎.

我想在布局模板中重复一个块的内容,如下所示:

<html>
<head>
    <title>{% block title %}{% endblock %} - {{ sitename }}</title>
</head>
<body>
    <h1>{% block title %}{% endblock %}</h1>
    <div id="content">
        {% block content %}{% endblock %}
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

此模板将在页面模板中进行扩展,如下所示:

{% extends "layout.html" %}
{% block title %}Page title{% endblock %}
{% block content %}
Here goes the content
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但是,这不能像我预期的那样工作,导致错误:

jinja2.exceptions.TemplateAssertionError: block 'title' defined twice
Run Code Online (Sandbox Code Playgroud)

金贾解释第二{% block title %}的layout.html作为一个块重新定义.

如何使用jinja2在同一模板中重复块的内容?

python templates jinja2

21
推荐指数
1
解决办法
6091
查看次数

如何获取jinja2/flask中的当前URL(request.url无法正常工作)

有没有办法在Jinja2/Flask中打印当前的URL?

例如,如果当前URL是 http://www.domain.com/example/1/2

{{ request.path }}工作和打印/example/1/2,但如何获得http://的完整URL?

从文档(这里){{ request.url }}应该工作,但它不会产生任何东西.

谢谢

UPDATE

以下是来自views.py的渲染/上下文args:

class EventDetailView(EventObjectMixin, FormView):
    template_name = 'gig/public/about.html'
    context_object_name = 'event'
    form_class = EventPurchaseTicketForm

    def get_context_data(self, **kwargs):
        context = super(EventDetailView, self).get_context_data(**kwargs)

    ...

        return context
Run Code Online (Sandbox Code Playgroud)

python jinja2 flask

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

如何在Django中创建可重用的模板?

Django创建可重用模板的方法是什么?

示例:假设我的很多页面都包含"最新消息"框并遵循DRY原则,我想定义一次并在其他页面中重复使用它.我如何使用Django(或Jinja2)模板执行此操作?

阅读Django的模板文档我得到的结论是Django模板提供了"自上而下"的继承,其中子模板本身决定了它将嵌入哪个超模板:

<!-- Super-template (not valid, for illustration): -->
<html>
  <head><title>Title</title></head>
  <body>{% block content %}{% endblock %}</body>
</html>
Run Code Online (Sandbox Code Playgroud)
<!-- Sub-template: -->
{% extends "base.html" %}
{% block content %}
<div class="latest-news">News</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

那么在几个地方重用块(子模板)的技术是什么?

django templates django-templates jinja2

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

这个" - "在jinja2模板引擎中有什么作用?

我正在学习jinja2,因为Google App Engine推荐它.

我在维基百科上找到了这个例子:http://en.wikipedia.org/wiki/Jinja_%28template_engine%29

  {%- for item in item_list %}
    {{ item }}{% if not loop.last %},{% endif %}
  {%- endfor %}
Run Code Online (Sandbox Code Playgroud)

"{% - for"中的" - "是什么?

另外,我在哪里可以找到jinja2示例(使用Google App Engine更好)?

非常感谢!

python django google-app-engine templates jinja2

20
推荐指数
2
解决办法
7901
查看次数

Python字典到html表

有没有办法将python字典打印到HTML中的表中.我有一个python字典,并通过使用发送到HTML

return render_template('index.html',result=result)
Run Code Online (Sandbox Code Playgroud)

现在我需要将结果字典中的元素作为表打印到HTML中.

python jinja2 flask

20
推荐指数
5
解决办法
4万
查看次数

Jinja2:为每3个项目创建一个新行

目前,对于文章中的每篇文章,都会创建一个类为span4的新div.相反,对于每一行,我想将其内容限制为三个跨度,并在达到该限制后创建一个新行.我怎样才能最好地实现这一点?

{% extends "base.html" %}
{% block content %}
<div class="container-fluid">
  <legend></legend>
  <div class="row-fluid" id="main">
      {% for article in articles %}
      <div class="span4">
          <div class="thumbnail">
              <a href="{{ article.url }}"><img src="http://placehold.it/300x150/483CB4"></a>
              <div class="caption">
                  <h4><a href="{{ article.url }}">{{ article.title }}</a></h4>
                  <p> {{ article.summary }}</p>
              </div>
              <legend></legend>
              <a class="btn" href="#"><i class="icon-thumbs-up"></i></a>
              <a class="btn" href="#"><i class="icon-thumbs-down"></i></a>
          </div>
      </div>
      {% endfor %}
  </div>
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

目标:

<div class="row">
  <div class="span4">article[0]</div>
  <div class="span4">article[1]</div>
  <div class="span4">article[2]</div>
</div>
<div class="row">
  <div class="span4">article[3]</div>
  <div class="span4">article[4]</div>
  <div class="span4">article[5]</div> …
Run Code Online (Sandbox Code Playgroud)

jinja2 flask

20
推荐指数
2
解决办法
7379
查看次数

如何在条件之后获得Ansible模板以兑现新行

模板看起来像这样:

solr.replication.master=
    {% if ansible_eth0.ipv4.address == servermaster.eth0 %}
        false
    {% else %}
        true
    {% endif %}

solr.replication.slave=false
Run Code Online (Sandbox Code Playgroud)

输出应该如下所示:

solr.replication.master=true
solr.replication.slave=false
Run Code Online (Sandbox Code Playgroud)

我实际得到的是:

solr.replication.master=truesolr.replication.slave=false
Run Code Online (Sandbox Code Playgroud)

据我所知,Jinja2剥离了空格,而且ansible可能默认配置了这个.但它似乎没有荣誉 - /+空白标签.

有没有办法强制换行?

templates jinja2 ansible

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

Ansible循环通过模板中的组变量

我正在努力解决在Ansible模板中拉动库存变量的模式,请帮忙.:)

我正在设置一个监控服务器,我希望能够使用Ansible自动配置服务器.我正在努力学习模板中的循环以允许我这样做.

到目前为止,我的半工作解决方案是在调用我所拥有的模板任务的剧本中:

monitoringserver.yml

 vars:
       servers_to_monitor:
         - {cname: web1, ip_address: 192.168.33.111}
         - {cname: web2, ip_address: 192.168.33.112}
         - {cname: db1, ip_address: 192.168.33.211}
         - {cname: db2, ip_address: 192.168.33.212}
Run Code Online (Sandbox Code Playgroud)

template.yml

all_hosts += [
           {% for host in servers_to_monitor %}
                   "{{ host.cname }}{{ host.ip }}|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
           {% endfor %}
] 
Run Code Online (Sandbox Code Playgroud)

但这并不理想,因为我无法为要监控的不同服务器定义不同的IP地址.其他人怎么做到这一点?我敢肯定它一定是微不足道的,但我的大脑正在努力学习语法.

谢谢

艾伦

编辑:澄清生成的模板看起来像这样:

all_hosts += [
                        "web1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
                        "web2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
                        "db1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
                        "db2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
]
Run Code Online (Sandbox Code Playgroud)

我想要的是web1/web2/db1/db2的值是不同的,这取决于我使用的是生产清单文件还是开发清单文件.

jinja2 ansible ansible-playbook

20
推荐指数
1
解决办法
8万
查看次数