"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > django-comComponents v 템플릿은 이제 Vue 또는 React와 동일합니다.

django-comComponents v 템플릿은 이제 Vue 또는 React와 동일합니다.

2024-11-08에 게시됨
검색:484

django-components v Templating is now on par with Vue or React

안녕하세요, 저는 Juro입니다. 저는 django-Components의 관리자 중 한 명입니다. v0.90-0.94 릴리스에서는 JSX/Vue와 유사하게 템플릿의 구성 요소를 훨씬 더 유연하게 사용할 수 있는 기능을 추가했습니다.

(이 정보는 JS/CSS 변수, TypeScript 및 Sass 및 HTML 조각에 대한 지원을 추가하느라 바빠서 이미 약간 오래된 정보입니다(한 달 전에 출시되었습니다. 최신 버전은 v0.101입니다). 흥미로운 내용입니다! 하지만 저는 아직 이 업데이트를 공유하지 않았다는 걸 깨달았습니다!)

어쨌든 다음은 blog_post_props에서 적용된 제목, ID 및 추가 kwargs를 허용하는 blog_post 구성 요소입니다.

    {% blog_post
      title="{{ person.first_name }} {{ person.last_name }}"
      id="{% random_int 10 20 %}"
      ...blog_post_props
    / %}

위는 여러 기능의 조합입니다.

1. 스스로 닫는 태그:

대신

    {% component "my_component" %}
    {% endcomponent %}

이제 간단히 쓸 수 있습니다

    {% component "my_component" / %}

2. 여러 줄 태그:

django_comComponents는 이제 여러 줄 태그를 허용하도록 Django를 자동으로 구성합니다. 따라서 모든 것을 한 줄에 집어넣는 대신:

    {% component "blog_post" title="abcdef..." author="John Wick" date_published="2024-08-28" %}
    {% endcomponent %}

여러 줄에 걸쳐 표시할 수 있습니다.

    {% component "blog_post"
      title="abcdef..."
      author="John Wick"
      date_published="2024-08-28"
    / %}

3. 스프레드 연산자:

JSX의 ...props 연산자 또는 Vue의 v-bind와 유사하게 이는 props/kwargs를 주어진 위치에 삽입합니다.

그래서
대신

    {% component "blog_post"
      title="abcdef..."
      author="John Wick"
      date_published="2024-08-28"
    / %}

kwargs를 사전에 갖고 다음을 적용할 수 있습니다.

    # Python
    props = {
        "title": "abcdef...",
        "author": "John Wick",
        "date_published": "2024-08-28"
    }
    {# Django #}
    {% component "blog_post" ...props %}

4. 구성 요소 입력의 문자열 리터럴 내부 템플릿 태그:

이제 구성 요소 입력 내에서 템플릿 태그와 필터를 사용할 수 있습니다.

    {% component 'blog_post'
      "As positional arg {# yay #}"
      title="{{ person.first_name }} {{ person.last_name }}"
      id="{% random_int 10 20 %}"
      readonly="{{ editable|not }}"
    / %}

이렇게 하면 값의 형식을 지정해야 할 때마다 추가 변수를 정의할 필요가 없습니다.

태그가 하나만 있고 그 주위에 추가 텍스트가 없으면 결과가 값으로 전달됩니다. 따라서 "{% random_int 10 20 %}"는 숫자를 전달하고 "{{ editable|not }}"는 부울을 전달합니다.

한 단계 더 나아가 Vue 또는 React와 비슷한 경험을 할 수도 있습니다. 여기서는 다음과 유사한 임의의 코드 표현식을 평가할 수 있습니다.

    

이는 템플릿 내에서 Python 표현식을 평가하는 데 사용할 수 있는 expr 태그와 필터를 추가하는 django-expr을 사용하여 가능합니다.

    {% component "my_form"
      value="{% expr 'input_value if is_enabled else None' %}"
    / %}

5. {% comp_name %} {% endcomp_name %} 및 TagFormatter

지원

기본적으로 구성 요소는 구성 요소 태그와 구성 요소 이름을 사용하여 작성됩니다.

    {% component "button" href="..." disabled %}
        Click me!
    {% endcomponent %}

이제 이를 변경할 수 있습니다(직접 만들 수도 있습니다!).

예를 들어 COMPONENTS.tag_formatter를 "django_comComponents.shorthand_comComponent_formatter"로 설정하면 다음과 같은 구성 요소를 작성할 수 있습니다.

    {% button href="..." disabled %}
        Click me!
    {% endbutton %}

더 많은 기능이 추가될 예정이므로 꼭 django-comforts를 사용해 보세요!

릴리스 선언문 이 기사는 https://dev.to/jurooravec/django-comComponents-v094-templating-is-now-on-par-with-vue-or-react-4bg7?1에서 복제됩니다. 침해가 있는 경우, 문의: Study_golang@163 .comdelete
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3