ตั้งค่าตัวแปรใน jinja


275

ฉันต้องการทราบว่าฉันจะตั้งค่าตัวแปรด้วยตัวแปรอื่นใน jinja ได้อย่างไร ฉันจะอธิบายฉันมีเมนูย่อยและฉันต้องการแสดงว่าลิงก์ใดใช้งานได้ ฉันลองสิ่งนี้:

{% set active_link = {{recordtype}} -%}

โดยที่ recordtype เป็นตัวแปรที่กำหนดให้กับเทมเพลตของฉัน


18
ผู้คนเข้ามาที่นี่จาก Google: คุณอาจสนใจเอกสารอย่างเป็นทางการบนsetแท็กเป็นหลักแทนที่จะเป็นข้อผิดพลาดทางไวยากรณ์ที่เกิดขึ้นโดยผู้ถามที่นี่หรือวิธีแก้ไขซึ่งเป็นคำตอบยอดนิยมที่นี่และที่อยู่ที่ซ้ำกันที่เชื่อมโยง .
Mark Amery

1
@MarkAmery Ty! โดยเฉพาะส่วนนี้jinja.palletsprojects.com/en/2.11.x/templates/…เป็นประโยชน์อย่างยิ่ง
ruohola

คำตอบ:


548

{{ }}บอกให้เทมเพลตพิมพ์ค่าซึ่งจะใช้ไม่ได้กับนิพจน์เหมือนที่คุณพยายามทำ ให้ใช้{% set %}แท็กเทมเพลตจากนั้นกำหนดค่าแบบเดียวกับที่คุณทำในโค้ด python ปกติ

{% set testing = 'it worked' %}
{% set another = testing %}
{{ another }}

ผลลัพธ์:

it worked

2
ถ้าตัวแปรของฉันเป็นคำสั่งสิ่งที่ตอนนี้ {% set dict.key = 'test'%} ไม่ทำงาน
Ib33X

คำตอบที่ถูกลบยังรวมถึงลิงก์นี้ซึ่งทำหน้าที่เป็นข้อมูลเสริมสำหรับคำตอบนี้: jinja.pocoo.org/docs/tricks/#highlighting-active-menu-items
Pascal

มันเป็นคำอธิบายที่ดีและเป็นคำอธิบายง่ายๆ รักเลย :)
Faris Rayhan

เราสามารถสร้างตัวแปร jinja ส่วนกลางและใช้ตลอดทั้งไฟล์ html ที่เราฝังตัวแปร jinja ได้หรือไม่ @Soviut
Sri Test

55

ชวเลขที่ดีสำหรับการกำหนดตัวแปรหลายรายการ

{% set label_cls, field_cls = "col-md-7", "col-md-3" %}

3
ดูเหมือนจะไม่ใกล้เคียงกับการตอบคำถาม?
John R Perry

1
@JohnRPerry แต่มันเป็นคำตอบที่ดีสำหรับคำตอบที่ได้รับการยอมรับ
พบกับ Sinojia

25

เพียงแค่ตั้งค่าแบบนี้

{% set active_link = recordtype -%}

7
เหตุใดจึงเป็นเช่นนั้นโดยเฉพาะ (เครื่องหมายลบท้าย แต่ไม่อยู่ที่จุดเริ่มต้น) สิ่งนี้จะลบช่องว่างต่อท้าย แต่ไม่นำช่องว่างถ้าฉันไม่เข้าใจผิด จะจบลงอย่างไร?
Leonid

16
ในคำถามเดิม¯ \ _ (ツ) _ / ¯
Graham P Heath
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.