django-components v テンプレートは Vue または React と同等になりました

Barbara Streisand
リリース: 2024-09-26 06:58:22
オリジナル
404 人が閲覧しました

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

こんにちは、私は Juro です。ジャンゴ コンポーネントのメンテナの 1 人です。リリース v0.90 ~ 0.94 では、JSX / Vue と同様に、テンプレートでのコンポーネントの使用をより柔軟にする機能を追加しました。

(私は JS / CSS 変数、TypeScript と Sass、HTML フラグメントのサポートを追加するのに忙しいので、この情報はすでに少し古くなっています (1 か月前にリリースされました。最新は 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_components は、複数行のタグを許可するように Django を自動的に構成するようになりました。したがって、すべてを 1 行に詰め込むのではなく、次のようにします。

    {% 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 }}"
    / %}
ログイン後にコピー

これにより、値をフォーマットする必要があるたびに追加の変数を定義する必要がなくなります。

タグが 1 つだけで、その周囲に余分なテキストがない場合、結果は値として渡されることに注意してください。したがって、「{%random_int 10 20 %}」は数値を渡し、「{{ editable|not }}」はブール値を渡します。

さらに一歩進んで、Vue や React と同様のエクスペリエンスを得ることができます。そこでは、次のような任意のコード式を評価できます。

    <MyForm
      value={ isEnabled ? inputValue : null }
    />
ログイン後にコピー

これは、テンプレート内から 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_components.shorthand_component_formatter」に設定すると、次のようにコンポーネントを作成できます。

    {% button href="..." disabled %}
        Click me!
    {% endbutton %}
ログイン後にコピー

これからもたくさんの機能が登場するので、ぜひ django-components を試してみてください!

以上がdjango-components v テンプレートは Vue または React と同等になりましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!