หมายเหตุ: นี่เป็นขวดเฉพาะ!
ฉันรู้ว่าโพสต์นี้ค่อนข้างเก่า แต่มีวิธีที่ดีกว่าในการทำเช่นนี้ใน Flask เวอร์ชันใหม่กว่าที่ใช้ตัวประมวลผลบริบท
สามารถสร้างตัวแปรได้อย่างง่ายดาย:
@app.context_processor
def example():
return dict(myexample='This is an example')
ด้านบนสามารถใช้ในเทมเพลต Jinja2 ที่มี Flask ดังนี้:
{{ myexample }}
(ซึ่งเป็นผลลัพธ์This is an example
)
ฟังก์ชั่นเต็มเปี่ยม:
@app.context_processor
def utility_processor():
def format_price(amount, currency=u'€'):
return u'{0:.2f}{1}'.format(amount, currency)
return dict(format_price=format_price)
ด้านบนเมื่อใช้เช่น:
{{ format_price(0.33) }}
(ซึ่งแสดงราคาอินพุตด้วยสัญลักษณ์สกุลเงิน)
อีกทางหนึ่งคุณสามารถใช้ตัวกรอง jinjaอบเข้า Flask เช่นใช้มัณฑนากร:
@app.template_filter('reverse')
def reverse_filter(s):
return s[::-1]
หรือไม่มีมัณฑนากรและลงทะเบียนฟังก์ชั่นด้วยตนเอง:
def reverse_filter(s):
return s[::-1]
app.jinja_env.filters['reverse'] = reverse_filter
ตัวกรองที่ใช้กับสองวิธีด้านบนสามารถใช้ดังนี้:
{% for x in mylist | reverse %}
{% endfor %}