我通过交易做html/css,我一直在和django项目一起作为模板设计师.我目前正在使用Jinja2的网站,我已经使用了大约2周.我刚刚通过阅读文档发现Jinja2不支持多级模板继承,因为你不能做多于一个
{% extends "foo" %}
Run Code Online (Sandbox Code Playgroud)
每次渲染.现在我很确定你可以在Django中做到这一点,它很强大,因为你可以指定一个基本模板,根据它指定3或4个模板,然后使用这些基础模板构建页面的内容.是不是继承点,所以你有更多的权力抽象,所以你唯一真正搞乱独特的代码?
无论如何我不知道该怎么做.我不知道是否有某些方法可以使用Django模板.我不是Django或Jinja(2)的专家,但我可以提供所需的任何信息.
如果我像这样返回Jinja2模板:
return render_response('home.htm', **context)
那么如何从模板中获取上下文中的变量列表?
我正在尝试使用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词典的python列表列表中的l = [a,b,c,...,n]
每个元素都是一个python字典,看起来像这样:
d = {}
d['type'] = 5
d['content'] = 'somestring'
Run Code Online (Sandbox Code Playgroud)
现在我希望所有词典都作为主模板中的列表.但是,每个字典的内容都应该由子模板呈现.用于呈现内容的模板应由字典的类型变量定义.
关于如何使用Jinja2完成此任务的任何提示(如果有帮助,我通过Flask使用它.)
谢谢!
我想检测Jinja2模板块内容是否为空.像这样的东西:
{% block foo %}{% endblock foo %}{% if foo %} - {% endif %}Blah Blah Blah
Run Code Online (Sandbox Code Playgroud)
我想要的是块定义本身之外的条件文本.在设计的示例中,我希望能够在块- 之后插入条件字符串,当且仅当块被覆盖且不为空时.
这可能吗?
阅读Jinja2文档后,我有兴趣在将来的Django项目中使用它.但是,我想知道是否有人在使用Django的Jinja2模板时遇到任何缺点或陷阱?如果是这样,你是如何解决它们的?
我也不介意听到积极的经历,只是为了获得Jinja2最好和最差的好横截面.
我从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数据?
我正在玩一个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中的键列表. …
我一直在研究如何在django 1.8中使用jinja2,但是没有完整的源代码来使用django和jinja2.我想知道你们是否知道在django中使用jinja2的过程.我查看了官方文档并查看了以下问题:如何设置django 1.8以使用jinja2?
但是他们都没有清楚地解释如何以一种放弃的方式使用jinja2.我刚开始使用django并且不知道文档中的所有术语.我真的很感激帮助.
<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的新手,任何人都可以帮助我吗?