在線Jinja2解析器


 

模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
    <p>綜合運用列表和字典的模板文件</p>
    <table>
        <thead>
            <th>書名</th>
            <th>作者</th>
            <th>價格</th>
        </thead>
        <tbody>
            {% for book in books %}
                <tr>
                    <td>{{ book.name }}</td>
                    <td>{{ book.author }}</td>
                    <td>{{ book.price }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

YAML:

books:
- name: 西游記
  author: 吳承恩
  price: 88
- name: 三國演義
  author: 羅貫中
  price: 98
- name: 紅樓夢
  author: 曹雪芹
  price: 89
- name: 水滸傳
  author: 施耐庵
  price: 101

JSON:

{
  "books": [
    {
      "name": "西游記",
      "author": "吳承恩",
      "price": 88
    },
    {
      "name": "三國演義",
      "author": "羅貫中",
      "price": 98
    },
    {
      "name": "紅樓夢",
      "author": "曹雪芹",
      "price": 89
    },
    {
      "name": "水滸傳",
      "author": "施耐庵",
      "price": 101
    }
  ]
}

渲染以后是:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
    <p>綜合運用列表和字典的模板文件</p>
    <table>
        <thead>
            <th>書名</th>
            <th>作者</th>
            <th>價格</th>
        </thead>
        <tbody>
                <tr>
                    <td>西游記</td>
                    <td>吳承恩</td>
                    <td>88</td>
                </tr>
                <tr>
                    <td>三國演義</td>
                    <td>羅貫中</td>
                    <td>98</td>
                </tr>
                <tr>
                    <td>紅樓夢</td>
                    <td>曹雪芹</td>
                    <td>89</td>
                </tr>
                <tr>
                    <td>水滸傳</td>
                    <td>施耐庵</td>
                    <td>101</td>
                </tr>
        </tbody>
    </table>
</body>
</html>

 

J2Live是一個實時的Jinja2解析器/渲染器,為它提供模板,關聯的值,單擊一個按鈕,它會為您提供精美的渲染文本。它具有一些很酷的功能,您可以請求trimlstrip渲染選項,在模板中使用非標准過濾器,並使非可打印字符可見。

現在,那里有類似的工具,但都不滿足我的需求。我希望有一些東西可以用作正在進行的Jinja2教程的輔助工具,並且對我自己的小實驗也可以有所幫助。

畢竟,最好的方法就是通過實踐來從事這個項目,這是一個很好的學習機會。而且我敢肯定,你們中的很多人都會同意,在編程方面,沒有太多練習的事情了:)

因此,事不宜遲,我向您介紹J2Live

J2Live maing頁面

上面的屏幕截圖顯示了J2Live的主頁,並且只有該頁面,可以從https://j2live.ttl255.com訪問

J2Live組件

主要的3個組件是在其中輸入模板和數據的文本窗口,以及在其中顯示渲染的模板的一幀。

Jinja2模板

在這里放置模板主體。您可以直接輸入模板,也可以復制粘貼現有模板的文本。

Jinja2數據

在數據窗口中,您提供要傳遞到模板的值。這些將成為字典鍵,然后可以從模板中對其進行訪問。

JSON和YAML格式均受本機支持,因此您可以使用其中任何一種,都將自動檢測到正確的格式。

渲染模板

模板渲染的結果將顯示在此框架中。

動作按鈕

繼續,我們有樹動作按鈕:

  • Render template -請求渲染模板。
  • Copy -將渲染模板的文本復制到剪貼板。
  • Clear render -清除渲染模板的文本。

如果要渲染新模板,則無需使用清除渲染按鈕。如果您請求使用Render template新結果進行渲染,則只需覆蓋舊結果即可。

附加組件

最后,還有其他組件可提供渲染選項,擴展模板操作並影響渲染模板的顯示。

渲染選項

  • Trim -刪除在Jinja2標簽之后默認添加的換行符。
  • Lstrip -如果有的話,在Jinja2塊之前剝離空格。
  • Strict check -引用未定義的變量將導致錯誤。

附加過濾器

我添加了兩個可以在模板中使用的額外過濾器。

  • ipaddr-這是ipaddrAnsible中過濾器副本,具有相同的功能
  • hash-生成應用到的值的散列,以散列算法為參數,例如hash(’sha1’)將使用sha1算法。有關受支持算法的列表,請參見參考中的鏈接

顯示空格

最后,Show whitespacesswitch啟用/禁用非可打印字符的呈現,例如空格,制表符和換行符。

當您嘗試了解Jinja2如何將空白添加到呈現的模板時,此選項特別有用。我在Jinja2的旅途中花了很長時間,試圖了解它的工作原理,希望借助此選項,您可以節省一些時間:)

Jinja2教程

您可以將J2Live用作我的Jinja2教程的輔助工具,只需從博客文章中復制粘貼示例模板和數據即可。

J2Live行動

我還准備了顯示兩個功能的gif文件:

在這里,我們渲染了沒有任何選項的模板,然后Trim啟用了渲染相同的模板

J2Live修剪

這是我的最愛,您可以在此處看到如何Show whitespaces切換以清楚地顯示渲染模板中的空格,制表符和換行符:

J2Live呈現空白

總結思想

雖然該應用程序完全可以正常運行,但我計划隨着時間的推移向其中添加更多內容。值得注意的是,我想提供Jinja2教程中的所有示例作為可加載單元,以便您可以立即嘗試它們。

我也想開放此應用程序的源代碼,以便您可以在本地運行它,也可以添加針對您的用例定制的過濾器而瘋狂。在此之前,我需要整理一些東西並提供文檔,希望它會在接下來的幾周內准備就緒。

如果您有任何疑問或遇到任何錯誤,請隨時在Twitter @ ttl255上ping我,我將盡力提供幫助。

我希望您會發現這個小工具有用,因此請務必嘗試一下J2Live

參考文獻

Jinja2文檔說明trimlstrip選項:https : //jinja.palletsprojects.com/en/2.11.x/templates/#whitespace-control

Jinja2文檔描述了未定義的類型及其行為:https : //jinja.palletsprojects.com/en/2.11.x/api/#undefined-types

Python hashlib模塊文檔,列出了可用的哈希算法:https ://docs.python.org/3.8/library/hashlib.html#module-hashlib


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM