标签: jinja2

你如何调试Mako模板?

到目前为止,我发现当Mako模板编码不正确时,无法生成可用的回溯.

有没有办法调试模板除了迭代每行代码?

python debugging templates mako jinja2

36
推荐指数
1
解决办法
8899
查看次数

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

在jinja2模板中创建指向Flask应用程序URL的链接

在我的Flask应用程序中,我有一个显示帖子的视图

@post_blueprint.route('/post/<int:year>/<int:month>/<title>')
def get_post(year,month,title):
    # My code
Run Code Online (Sandbox Code Playgroud)

要显示最后10个条目,我有以下视图:

@post_blueprint.route('/posts/')
def get_all_posts():
    # My code
    return render_template('p.html',posts=posts)
Run Code Online (Sandbox Code Playgroud)

现在,当我显示最后10个帖子时,我想将帖子的标题转换为超链接.目前我必须在我的jinja模板中执行以下操作来实现此目的:

<a href="/post/{{year}}/{{month}}/{{title}}">{{title}}</a>
Run Code Online (Sandbox Code Playgroud)

有没有办法避免硬编码网址?

就像url_for用于创建Flask网址的函数一样:

url_for('view_name',**arguments)
Run Code Online (Sandbox Code Playgroud)

我试过寻找一个,但我,我找不到它.

python jinja2 url-for flask

35
推荐指数
1
解决办法
7万
查看次数

Flask + Jinja:将数据传递给基本模板/所有模板

我有一个方法返回我的基本模板中需要的数据(全局页脚的内容).

如何(1)将变量传递给基本模板(其他模板扩展)或(2)将变量全局传递给所有模板而不在调用中明确添加它render_template

jinja2 flask

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

在Jinja2中的zip(list1,list2)?

我在Jinja2中进行代码生成,我经常想要一起遍历两个列表(即变量名称和类型),是否有一种简单的方法可以执行此操作,还是只需要传递一个预压缩列表?我无法在文档或谷歌搜索中找到这样的功能.

python code-generation jinja2

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

检查Jinja2中的数组是否为空

我需要检查变量texts是否已定义index.html.

如果定义了变量而不是空,那么我应该渲染循环.否则,我想显示错误消息{{error}}.

基本上这在PHP中

if (isset($texts) && !empty($texts)) {
    for () { ... }
}
else {
    print $error;
}
Run Code Online (Sandbox Code Playgroud)

的index.html

{% for text in texts %} 
    <div>{{error}}</div>
    <div class="post">
        <div class="post-title">{{text.subject}}</div>
        <pre class="post-content">{{text.content}}</pre>
    </div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我怎么说在jinja2?

jinja2

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

jinja2.exceptions.TemplateNotFound错误

我使用flask,当我调用此url时出现此错误:/login 这是我的登录方法:

@app.route('/login')
def login():
    if authenticateForPanel():
        return redirect(url_for("panel"))
    else:
        getParam = request.args.getlist('redirect_uri')
        if getParam:
            ref =getParam[0]
        else:
            ref="/panel"
        return render_template( themesDir + g.blogOptions['active_theme']+'/login.html', blogOptions = g.blogOptions, ref=ref )
Run Code Online (Sandbox Code Playgroud)

追溯:

Traceback (most recent call last):
  File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1701, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1689, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1687, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1360, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/ozcan/Library/Python/2.7/lib/python/site-packages/flask/app.py", line 1358, in full_dispatch_request
    rv = …
Run Code Online (Sandbox Code Playgroud)

python jinja2 flask

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

如何在Ansible playbook中编写动态变量

基于extra vars参数I需要写入变量值ansible playbook

ansible-playbook playbook.yml -e "param1=value1 param2=value2 param3=value3"
Run Code Online (Sandbox Code Playgroud)

如果只通过了param1

myvariable: 'param1'  
Run Code Online (Sandbox Code Playgroud)

如果只有param1,则param2通过

myvariable: 'param1,param2' 
Run Code Online (Sandbox Code Playgroud)

如果传递了param1,param2,param3,那么变量值将是

myvariable: 'param1,param2,param3' 
Run Code Online (Sandbox Code Playgroud)

当我尝试通过模板动态创建变量时,我的playbook总是采用先前的变量值.但在 dest=roles/myrole/vars/main.yml其写作正确的价值.

我在这里尝试一下

- hosts: local
  user: roop
  gather_facts: yes
  connection: local

  tasks: 

  - template: src=roles/myrole/templates/myvar.j2 dest=roles/myrole/vars/main.yml

  - debug: var=myvariable

  roles:
        - { role: myrole }
Run Code Online (Sandbox Code Playgroud)

所以里面myrole目录我创建templatevars

- roles
  - myrole
    - vars/main.yml
    - templates/myvar.j2 
Run Code Online (Sandbox Code Playgroud)

模板/ myvar.j2

{% if param1 is defined and param2 is defined and param3 …
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-playbook

33
推荐指数
3
解决办法
11万
查看次数

如何从Flask装饰器向Jinja模板发送变量?

我的蓝图瓶应用程序周围的许多路线需要将"侧边栏数据"发送给jinja.

我正在寻找最有效的方法来做到这一点.它们必须比将'generate_sidebar_data()'函数导入每个蓝图更好,反复说:

var1, var2, var3 = generate_sidebar_data()
Run Code Online (Sandbox Code Playgroud)

然后使用'render_template'发送它们:

return render_template('template.html',
                           var1=var1,
                           var2=var2,
                           var3=var3
                      )
Run Code Online (Sandbox Code Playgroud)

我想要的是一个装饰器,我可以使用与上述相同的路径(运行函数并将变量发送给jinja),但我不知道这是否可行.如何从装饰器函数内部向jinja发送变量?

@blueprint.route('/')
@include_sidebar_data
def frontpage():

    return render_template('template.html')
Run Code Online (Sandbox Code Playgroud)

python templates decorator jinja2 flask

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

在for循环中jinja2中的范围

我有一个嵌套列表.我需要迭代一个列表并将其保持在for循环中,如下所示.

{% for alpha in list %}
    <div id="{{ loop.index }}"> 
       <div class='sidebar-one'>
          {% for beta in list[0][2:] %} #I want to iterate through list[0][2:] till list[n][2:]
              <p> {{ beta[0][0] }} </p>
          {% endfor %}
       </div>
    </div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我试过范围但没有运气.

{% for n in range(1,n) %}
{% for line in check[{{n}}][2:] %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

它扔错了:

    TemplateSyntaxError: expected token ':', got '}'
Run Code Online (Sandbox Code Playgroud)

python loops jinja2

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