programing

진자에서 문자열을 목록으로 분할?

goodsources 2023. 10. 3. 09:12
반응형

진자에서 문자열을 목록으로 분할?

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

코드에서 이 문자열들을 따로 사용해야 합니다. 즉 변수는 변수1 = "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] }}

5년 만에 제 자신의 질문으로 돌아와서 많은 사람들이 이것이 유용하다고 생각하는 것을 본 후, 약간의 업데이트.

문자열 변수는 다음과 같이 나눌 수 있습니다.list분할 함수를 사용하여 (유사한 값을 포함할 수 있음)set할당에 사용됩니다).공식 문서에서는 이 기능을 찾지 못했지만 일반 파이썬과 유사하게 작동합니다.인덱스를 통해 항목을 호출하거나 루프에 사용하거나 데이브가 제안한 값을 알고 있으면 튜플과 같은 변수를 설정할 수 있습니다.

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

아니면

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

아니면

{% set item1, item2 = variable1.split(';') %}
The grass is {{ item1 }} and the boat is {{ item2 }}

문자열이 최대 10개인 경우 모든 값을 반복하기 위해 목록을 사용해야 합니다.

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

jinja에서 임의의 파이썬 코드를 실행할 수는 없습니다. 그런 점에서 JSP처럼 작동하지 않습니다(그냥 비슷해 보입니다).진자에 있는 것들은 모두 맞춤 구문입니다.

사용자 정의 필터를 정의하는 것이 가장 합리적이므로 예를 들어 다음을 수행할 수 있습니다.

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

반응형