python网页设计模板_模板设计者文档

本文详细介绍了 Jinja2 模板引擎中可用的内置过滤器,包括 `escape`、`join`、`sort`、`batch` 等,这些过滤器用于处理字符串、列表、字典等数据类型,实现如 HTML 转义、序列分组、内容格式化等操作,是模板渲染和数据处理的重要工具。
摘要由CSDN通过智能技术生成

内置过滤器清单¶

abs(number)¶

Return the absolute value of the argument.

attr(obj, name)¶

Get an attribute of an object. foo|attr("bar") works like

foo["bar"] just that always an attribute is returned and items are not

looked up.

batch(value, linecount, fill_with=None)¶

A filter that batches items. It works pretty much like slice

just the other way round. It returns a list of lists with the

given number of items. If you provide a second parameter this

is used to fill up missing items. See this example:

{%- for row in items|batch(3, ' ') %}

{%- for column in row %}

{{ column }}

{%- endfor %}

{%- endfor %}

capitalize(s)¶

Capitalize a value. The first character will be uppercase, all others

lowercase.

center(value, width=80)¶

Centers the value in a field of a given width.

default(value, default_value=u'', boolean=False)¶

If the value is undefined it will return the passed default value,

otherwise the value of the variable:

{{ my_variable|default('my_variable is not defined') }}

This will output the value of my_variable if the variable was

defined, otherwise 'my_variable is not defined'. If you want

to use default with variables that evaluate to false you have to

set the second parameter to true:

{{ ''|default('the string was empty', true) }}

Aliases :d

dictsort(value, case_sensitive=False, by='key')¶

Sort a dict and yield (key, value) pairs. Because python dicts are

unsorted you may want to use this function to order them by either

key or value:

{% for item in mydict|dictsort %}

sort the dict by key, case insensitive

{% for item in mydict|dictsort(true) %}

sort the dict by key, case sensitive

{% for item in mydict|dictsort(false, 'value') %}

sort the dict by key, case insensitive, sorted

normally and ordered by value.

escape(s)¶

Convert the characters &, , ‘, and ” in string s to HTML-safe

sequences. Use this if you need to display text that might contain

such characters in HTML. Marks return value as markup string.

Aliases :e

filesizeformat(value, binary=False)¶

Format the value like a ‘human-readable’ file size (i.e. 13 kB,

4.1 MB, 102 Bytes, etc). Per default decimal prefixes are used (Mega,

Giga, etc.), if the second parameter is set to True the binary

prefixes are used (Mebi, Gibi).

first(seq)¶

Return the first item of a sequence.

float(value, default=0.0)¶

Convert the value into a floating point number. If the

conversion doesn’t work it will return 0.0. You can

override this default using the first parameter.

forceescape(value)¶

Enforce HTML escaping. This will probably double escape variables.

format(value, *args, **kwargs)¶

Apply python string formatting on an object:

{{ "%s - %s"|format("Hello?", "Foo!") }}

-> Hello? - Foo!

groupby(value, attribute)¶

Group a sequence of objects by a common attribute.

If you for example have a list of dicts or objects that represent persons

with gender, first_name and last_name attributes and you want to

group all users by genders you can do something like the following

snippet:

{% for group in persons|groupby('gender') %}

{{ group.grouper }}

{% for person in group.list %}

{{ person.first_name }} {{ person.last_name }}

{% endfor %}

{% endfor %}

Additionally it’s possible to use tuple unpacking for the grouper and

list:

{% for grouper, list in persons|groupby('gender') %}

...

{% endfor %}

As you can see the item we’re grouping by is stored in the grouper

attribute and the list contains all the objects that have this grouper

in common.

Changed in version 2.6:It’s now possible to use dotted notation to group by the child

attribute of another attribute.

indent(s, width=4, indentfirst=False)¶

Return a copy of the passed string, each line indented by

4 spaces. The first line is not indented. If you want to

change the number of spaces or indent the first line too

you can pass additional parameters to the filter:

{{ mytext|indent(2, true) }}

indent by two spaces and indent the first line too.

int(value, default=0)¶

Convert the value into an integer. If the

conversion doesn’t work it will return 0. You can

override this default using the first parameter.

join(value, d=u'', attribute=None)¶

Return a string which is the concatenation of the strings in the

sequence. The separator between elements is an empty string per

default, you can define it with the optional parameter:

{{ [1, 2, 3]|join('|') }}

-> 1|2|3

{{ [1, 2, 3]|join }}

-> 123

It is also possible to join certain attributes of an object:

{{ users|join(', ', attribute='username') }}

New in version 2.6:The attribute parameter was added.

last(seq)¶

Return the last item of a sequence.

length(object)¶

Return the number of items of a sequence or mapping.

Aliases :count

list(value)¶

Convert the value into a list. If it was a string the returned list

will be a list of characters.

lower(s)¶

Convert a value to lowercase.

map()¶

Applies a filter on a sequence of objects or looks up an attribute.

This is useful when dealing with lists of objects but you are really

only interested in a certain value of it.

The basic usage is mapping on an attribute. Imagine you have a list

of users but you are only interested in a list of usernames:

Users on this page:{{ users|map(attribute='username')|join(', ') }}

Alternatively you can let it invoke a filter by passing the name of the

filter and the arguments afterwards. A good example would be applying a

text conversion filter on a sequence:

Users on this page:{{ titles|map('lower')|join(', ') }}

New in version 2.7.

pprint(value, verbose=False)¶

Pretty print a variable. Useful for debugging.

With Jinja 1.2 onwards you can pass it a parameter. If this parameter

is truthy the output will be more verbose (this requires pretty)

random(seq)¶

Return a random item from the sequence.

reject()¶

Filters a sequence of objects by appying a test to either the object

or the attribute and rejecting the ones with the test succeeding.

Example usage:

{{ numbers|reject("odd") }}

New in version 2.7.

rejectattr()¶

Filters a sequence of objects by appying a test to either the object

or the attribute and rejecting the ones with the test succeeding.

{{ users|rejectattr("is_active") }}

{{ users|rejectattr("email", "none") }}

New in version 2.7.

replace(s, old, new, count=None)¶

Return a copy of the value with all occurrences of a substring

replaced with a new one. The first argument is the substring

that should be replaced, the second is the replacement string.

If the optional third argument count is given, only the first

count occurrences are replaced:

{{ "Hello World"|replace("Hello", "Goodbye") }}

-> Goodbye World

{{ "aaaaargh"|replace("a", "d'oh, ", 2) }}

-> d'oh, d'oh, aaargh

reverse(value)¶

Reverse the object or return an iterator the iterates over it the other

way round.

round(value, precision=0, method='common')¶

Round the number to a given precision. The first

parameter specifies the precision (default is 0), the

second the rounding method:

'common' rounds either up or down

'ceil' always rounds up

'floor' always rounds down

If you don’t specify a method 'common' is used.

{{ 42.55|round }}

-> 43.0

{{ 42.55|round(1, 'floor') }}

-> 42.5

Note that even if rounded to 0 precision, a float is returned. If

you need a real integer, pipe it through int:

{{ 42.55|round|int }}

-> 43

safe(value)¶

Mark the value as safe which means that in an environment with automatic

escaping enabled this variable will not be escaped.

select()¶

Filters a sequence of objects by appying a test to either the object

or the attribute and only selecting the ones with the test succeeding.

Example usage:

{{ numbers|select("odd") }}

New in version 2.7.

selectattr()¶

Filters a sequence of objects by appying a test to either the object

or the attribute and only selecting the ones with the test succeeding.

Example usage:

{{ users|selectattr("is_active") }}

{{ users|selectattr("email", "none") }}

New in version 2.7.

slice(value, slices, fill_with=None)¶

Slice an iterator and return a list of lists containing

those items. Useful if you want to create a div containing

three ul tags that represent columns:

{%- for column in items|slice(3) %}

{%- for item in column %}

{{ item }}

{%- endfor %}

{%- endfor %}

If you pass it a second argument it’s used to fill missing

values on the last iteration.

sort(value, reverse=False, case_sensitive=False, attribute=None)¶

Sort an iterable. Per default it sorts ascending, if you pass it

true as first argument it will reverse the sorting.

If the iterable is made of strings the third parameter can be used to

control the case sensitiveness of the comparison which is disabled by

default.

{% for item in iterable|sort %}

...

{% endfor %}

It is also possible to sort by an attribute (for example to sort

by the date of an object) by specifying the attribute parameter:

{% for item in iterable|sort(attribute='date') %}

...

{% endfor %}

Changed in version 2.6:The attribute parameter was added.

string(object)¶

Make a string unicode if it isn’t already. That way a markup

string is not converted back to unicode.

striptags(value)¶

Strip SGML/XML tags and replace adjacent whitespace by one space.

sum(iterable, attribute=None, start=0)¶

Returns the sum of a sequence of numbers plus the value of parameter

‘start’ (which defaults to 0). When the sequence is empty it returns

start.

It is also possible to sum up only certain attributes:

Total:{{ items|sum(attribute='price') }}

Changed in version 2.6:The attribute parameter was added to allow suming up over

attributes. Also the start parameter was moved on to the right.

title(s)¶

Return a titlecased version of the value. I.e. words will start with

uppercase letters, all remaining characters are lowercase.

trim(value)¶

Strip leading and trailing whitespace.

truncate(s, length=255, killwords=False, end='...')¶

Return a truncated copy of the string. The length is specified

with the first parameter which defaults to 255. If the second

parameter is true the filter will cut the text at length. Otherwise

it will discard the last word. If the text was in fact

truncated it will append an ellipsis sign ("..."). If you want a

different ellipsis sign than "..." you can specify it using the

third parameter.

{{ "foo bar"|truncate(5) }}

-> "foo ..."

{{ "foo bar"|truncate(5, True) }}

-> "foo b..."

upper(s)¶

Convert a value to uppercase.

urlencode(value)¶

Escape strings for use in URLs (uses UTF-8 encoding). It accepts both

dictionaries and regular strings as well as pairwise iterables.

New in version 2.7.

urlize(value, trim_url_limit=None, nofollow=False)¶

Converts URLs in plain text into clickable links.

If you pass the filter an additional integer it will shorten the urls

to that number. Also a third argument exists that makes the urls

“nofollow”:

{{ mytext|urlize(40, true) }}

links are shortened to 40 chars and defined with rel="nofollow"

wordcount(s)¶

Count the words in that string.

wordwrap(s, width=79, break_long_words=True, wrapstring=None)¶

Return a copy of the string passed to the filter wrapped after

79 characters. You can override this default using the first

parameter. If you set the second parameter to false Jinja will not

split words apart if they are longer than width. By default, the newlines

will be the default newlines for the environment, but this can be changed

using the wrapstring keyword argument.

New in version 2.7:Added support for the wrapstring parameter.

xmlattr(d, autospace=True)¶

Create an SGML/XML attribute string based on the items in a dict.

All values that are neither none nor undefined are automatically

escaped:

'id': 'list-%d'|format(variable)}|xmlattr }}>

...

Results in something like this:

...

As you can see it automatically prepends a space in front of the item

if the filter returned something unless the second parameter is false.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值