标签: jinja2

Jinja2中的多级模板继承?

我通过交易做html/css,我一直在和django项目一起作为模板设计师.我目前正在使用Jinja2的网站,我已经使用了大约2周.我刚刚通过阅读文档发现Jinja2不支持多级模板继承,因为你不能做多于一个

{% extends "foo" %}
Run Code Online (Sandbox Code Playgroud)

每次渲染.现在我很确定你可以在Django中做到这一点,它很强大,因为你可以指定一个基本模板,根据它指定3或4个模板,然后使用这些基础模板构建页面的内容.是不是继承点,所以你有更多的权力抽象,所以你唯一真正搞乱独特的代码?

无论如何我不知道该怎么做.我不知道是否有某些方法可以使用Django模板.我不是Django或Jinja(2)的专家,但我可以提供所需的任何信息.

css python django django-templates jinja2

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

如何从Jinja 2模板获取当前变量列表?

如果我像这样返回Jinja2模板: return render_response('home.htm', **context)

那么如何从模板中获取上下文中的变量列表?

templates jinja2

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

如何访问Jinja2中列表的一部分

我正在尝试使用jinja2模板语言返回帖子列表中的最后n个(比方说5个)帖子:

{% for recent in site.posts|reverse|slice(5) %}
    {% for post in recent %}
        <li> <a href="/{{ post.url }}">{{ post.title }}</a></li>
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这会返回整个列表.你如何剥离第一个或最后一个元素?

python templates jinja2

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

在Jinja2中动态使用模板

我必须遵循以下场景:

一个python词典的python列表列表中的l = [a,b,c,...,n] 每个元素都是一个python字典,看起来像这样:

d = {}
d['type'] = 5
d['content'] = 'somestring'
Run Code Online (Sandbox Code Playgroud)

现在我希望所有词典都作为主模板中的列表.但是,每个字典的内容都应该由子模板呈现.用于呈现内容的模板应由字典的类型变量定义.

关于如何使用Jinja2完成此任务的任何提示(如果有帮助,我通过Flask使用它.)

谢谢!

python templates jinja2 flask

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

如何确定Jinja2模板块是否为空?

我想检测Jinja2模板块内容是否为空.像这样的东西:

{% block foo %}{% endblock foo %}{% if foo %} - {% endif %}Blah Blah Blah
Run Code Online (Sandbox Code Playgroud)

我想要的是块定义本身之外的条件文本.在设计的示例中,我希望能够在块- 之后插入条件字符串,当且当块被覆盖且不为空时.

这可能吗?

templates block jinja2 flask

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

在Django中使用Jinja2模板的任何缺点或陷阱?

阅读Jinja2文档后,我有兴趣在将来的Django项目中使用它.但是,我想知道是否有人在使用Django的Jinja2模板时遇到任何缺点或陷阱?如果是这样,你是如何解决它们的?

我也不介意听到积极的经历,只是为了获得Jinja2最好和最差的好横截面.

django templates frameworks django-templates jinja2

23
推荐指数
3
解决办法
7842
查看次数

当我希望它在Flask/jinja2中显示为html时,文本被转义

我从rss中提取一个feed并将数据存储在appengine db中.rss feed内容包括整个html.所以我有这个python代码:

@app.route("/rssRead")
def pullRss():
    feedItem = db.getFeedItemByName(request.args.get('title',None), request.args.get('key',None))
    return render_template("rss.html", data= Markup(feedItem.html).unescape())
Run Code Online (Sandbox Code Playgroud)

我的html模板看起来像这样:

{% extends "layout.html" %}
{% block body %}
{{ data }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

因此,当我查看页面时,我显示了实际的html标记,如何取消html数据?

python jinja2 flask

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

在Jinja2/Werkzeug中渲染python dict

我正在玩一个url shortener(基于Werkzeug的Shortly演示应用程序).

我有这样的字典 -

    ('1', {'target': 'http://10.58.48.103:5000/', 'clicks': '1'})
    ('3', {'target': 'http://slash.org', 'clicks': '4'})
    ('2', {'target': 'http://10.58.48.58:5000/', 'clicks': '1'})
    ('5', {'target': 'http://de.com/a', 'clicks': '0'})
Run Code Online (Sandbox Code Playgroud)

在url_list中返回并由render_template使用

def on_list_urls(self, request):
    url_list = self.get_urls()
    return self.render_template('list_urls.html',
        url_list = url_list
    )
Run Code Online (Sandbox Code Playgroud)

模板list_urls非常简单 -

    {% extends "layout.html" %}
    {% block title %}List URLs{% endblock %}
    {% block body %}
      <h2>List URLs</h2>
      <ul id="items">
      {% for item in url_list %}
        <li>{{ item }}</li>
      {% endfor %}
      </ul>

    {% endblock %}
Run Code Online (Sandbox Code Playgroud)

事情是,我似乎无法访问dict中的项目.

这条线

<li>{{ item }}</li>
Run Code Online (Sandbox Code Playgroud)

是我关注的焦点.如上所述,我得到了dict中的键列表. …

python werkzeug jinja2

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

如何在Django 1.8中使用jinja2作为模板引擎

我一直在研究如何在django 1.8中使用jinja2,但是没有完整的源代码来使用django和jinja2.我想知道你们是否知道在django中使用jinja2的过程.我查看了官方文档并查看了以下问题:如何设置django 1.8以使用jinja2?

但是他们都没有清楚地解释如何以一种放弃的方式使用jinja2.我刚开始使用django并且不知道文档中的所有术语.我真的很感激帮助.

python django jinja2

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

如何用Vue代替Jinja渲染

<template id="task-template">
    <h1>My Tasks</h1>
    <tasks-app></tasks-app>
    <ul class="list-group">
        <li class="list-group-item" v-for="task in list">
            {{task.body|e}}
        </li>
    </ul>
</template>
Run Code Online (Sandbox Code Playgroud)

以上是我的HTML.我想通过Vue渲染代码.

<script>
    Vue.component('tasks-app', {
        template: '#tasks-template',
        data: function() {
            return {
                list: []
            }
        }
        created: function() {
            $.getJson('/api/tasks', function(data) {
                this.list = data;
            })
        }
    })
    new Vue({
        el: 'body',
    });
</script>
Run Code Online (Sandbox Code Playgroud)

上面是我的Vue代码,Jinja引发了一个异常,即'task'未定义,我希望是由Vue而不是Jinja呈现的html代码,我知道它可以在Laravel中完成:

"@{{task.body}}"
Run Code Online (Sandbox Code Playgroud)

由于我是Jinja的新手,任何人都可以帮助我吗?

html python jinja2 flask vue.js

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

标签 统计

jinja2 ×10

python ×7

templates ×5

flask ×4

django ×3

django-templates ×2

block ×1

css ×1

frameworks ×1

html ×1

vue.js ×1

werkzeug ×1