development

진자에서 문자열을 목록으로 분할 하시겠습니까?

big-blog 2021. 1. 6. 20:42
반응형

진자에서 문자열을 목록으로 분할 하시겠습니까?


';'로 구분 된 문자열 인 jinja2 템플릿에 몇 가지 변수가 있습니다.

코드에서 이러한 문자열을 별도로 사용해야합니다. 즉, 변수는 variable1 = "green; blue"입니다.

{% list1 = {{ variable1 }}.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}

템플릿을 렌더링하기 전에 분할 할 수 있지만 때로는 문자열 내부에 최대 10 개의 문자열이 있기 때문에 지저분 해집니다.

나는 내가했던 곳 이전에 jsp를 가졌습니다.

<% String[] list1 = val.get("variable1").split(";");%>    
The grass is <%= list1[0] %> and the boat is <%= list1[1] %>

편집하다:

다음과 함께 작동합니다.

{% set list1 = variable1.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}

다음과 함께 작동합니다.

{% set list1 = variable1.split(';') %}
The grass is {{ list1[0] }} and the boat is {{ list1[1] }}

최대 10 개의 문자열이있는 경우 모든 값을 반복하려면 목록을 사용해야합니다.

{% set list1 = variable1.split(';') %}
{% for list in list1 %}
<p>{{ list }}</p>
{% endfor %}

jinja에서 임의의 Python 코드를 실행할 수 없습니다. 그 점에서 JSP처럼 작동하지 않습니다 (비슷하게 보입니다). jinja의 모든 것은 사용자 정의 구문입니다.

목적에 따라 맞춤 필터 를 정의하는 것이 가장 합리적 이므로 예를 들어 다음을 수행 할 수 있습니다.

The grass is {{ variable1 | splitpart(0, ',') }} and the boat is {{  splitpart(1, ',') }}
Or just:
The grass is {{ variable1 | splitpart(0) }} and the boat is {{  splitpart(1) }}

그러면 필터 함수는 다음과 같습니다.

def splitpart (value, index, char = ','):
    return value.split(char)[index]

더 합리적 일 수있는 대안은 컨트롤러에서 분할하고 분할 된 목록을 뷰에 전달하는 것입니다.

참조 URL : https://stackoverflow.com/questions/30515456/split-string-into-list-in-jinja

반응형