FormPump เป็นเครื่องมือที่มีงูหลามที่ทำงานร่วมกับเครื่องมือ templating นิยมที่ช่วยให้คุณเรียบร้อยกรอกข้อมูลในรูปแบบ HTML
FormPump เป็นคอลเลกชันของนามสกุลแม่แบบเครื่องยนต์หลามเขียนที่จะทำให้รูปแบบ HTML ง่ายมากที่จะทำงานร่วมกับ โดยตรงโหม่งปัญหาที่เกี่ยวข้องกับการกรอกข้อมูลในค่าลงในปัจจัยการผลิตของการใช้ปัจจัยการผลิตฉลากของคุณและแสดงข้อความผิดพลาดในวิธีที่รวดเร็ว มันเป็นเช่นนี้โดยการแนะนำชุดของแท็ก / ฟังก์ชั่นลงในแม่แบบของคุณที่สร้างองค์ประกอบในรูปแบบวิธีที่ง่ายและเป็นธรรมชาติที่มีความรวดเร็วในการปรับตัวลงในรหัสที่มีอยู่
ปัจจุบัน FormPump สนับสนุน Jinja2
เบื้องต้น [Jinja2] ตัวอย่าง
(ตัวอย่างที่แสดงใน README นี้จะถูกแสดงใน Jinja2. templating ภาษาอื่น ๆ จะมีการใช้งานที่คล้ายกัน.)
>>> จากการนำเข้า formpump JinjaPump
>>> จากสิ่งแวดล้อมนำเข้า jinja2
>>> env = สิ่งแวดล้อม (นามสกุล = [JinjaPump])
>>> = TPL env.from_string ('' '
... {% สำรอง "ตัวอย่าง" class = "รูปแบบที่เรียบง่าย"%}
... {% ฉลาก 'INP'} ป้อนค่า {% endlabel%}
... {text% "INP"%}
... {% endform%}
... '' ')
>>> tpl.render พิมพ์ ()
& nbsp;>>> พิมพ์ tpl.render (form_vars = {'ตัวอย่าง': {'INP': 123}})
ในตัวอย่างข้างต้นเราจะเห็นวัตถุแม่แบบที่เรียบง่ายถูกสร้างขึ้นที่มีรูปแบบหนึ่ง เมื่อการแสดงผลโดยไม่ขัดแย้งใด ๆ ก็เพียงแค่พิมพ์ออกรูปแบบที่เต็มไปด้วยข้อมูลที่ไม่มี. เมื่อพิเศษ "form_vars" Dict มีให้เติมค่าใด ๆ มันสามารถหาในรูปแบบเท่าที่จะสร้างมัน
นอกจากนี้คุณยังอาจสังเกตเห็นนานแอตทริบิวต์ id น่าเกลียดที่ถูกกำหนด เหล่านี้จะต้องเพื่อให้ FormPump สามารถเชื่อมโยงกับปัจจัยป้าย; FormPump ทำให้พวกเขาขึ้นเป็นมันไป คุณมีอิสระที่จะแทนที่พวกเขาเองโดยเพียงแค่การให้ id ของคุณเองและสำหรับแอตทริบิวต์ในองค์ประกอบของคุณ FormPump โดยอัตโนมัติติดตามป้ายและปัจจัยการผลิตในแม่แบบและพยายามที่จะเชื่อมโยงพวกเขาอย่างชาญฉลาดกับอีกคนหนึ่ง แต่เมื่อปัจจัยการผลิตไม่ได้มีของ id ระบุและป้ายชื่อไม่ได้สำหรับที่ระบุ
การกรอกแบบฟอร์ม
FormPump เติมในรูปแบบโดยดูค่าการป้อนข้อมูลในตัวแปรแม่แบบที่กำหนด นี้ที่เริ่มต้นตัวแปร form_vars แต่สามารถกำหนดค่าโดยการตั้งค่าคุณสมบัติของการขยาย values_dict_name (สำหรับ Jinja2 ตั้งนี้ในสภาพแวดล้อม: env.values_dict_name)
form_vars เป็นพจนานุกรมของพจนานุกรม ปุ่มระดับบนสุดเป็นตัวระบุบริบทแบบฟอร์มการอธิบายในรายละเอียดด้านล่าง บริบทแต่ละรูปแบบหมายถึงพจนานุกรมอื่นซึ่งเป็นชุดที่เรียบง่ายของคู่ค่าคีย์ที่ FormPump ใช้ในการค้นหาค่าสำหรับรูปแบบ ปุ่มอ้างถึงใส่ชื่อ ค่ากลายเป็นแอตทริบิวต์ค่า * สำหรับการป้อนข้อมูลแปลง Unicode
* หมายเหตุ: สำหรับปัจจัยการผลิตเช่นปุ่มที่ค่าที่กำหนดไว้ FormPump ใช้ค่า form_vars เพื่อตรวจสอบว่าปุ่มเพื่อเลือกก่อนถ้ามี
บริบทของฟอร์ม
FormPump ช่วยให้คุณมีมากกว่าหนึ่งรูปแบบในแม่แบบของคุณ รูปแบบที่แต่ละคนสามารถมีชื่อการป้อนข้อมูลที่ทับซ้อนกัน รูปแบบจะ disambiguated โดยสิ่งที่เรียก FormPump บริบทแบบฟอร์ม ตัวอย่างข้างต้นแสดงให้เห็นบริบทรูปแบบการตั้งค่าเป็น "ตัวอย่าง" - มันเป็นสตริงทันทีต่อไปนี้คำหลักรูปแบบ สตริงจะต้องเป็นสตริงคงไม่ตัวแปรหรือการแสดงออกอื่น ๆ แบบไดนามิก (มีวิธีรอบนี้ครอบคลุมด้านล่าง)
ตัวอย่างง่ายๆควรชี้แจงการใช้งานของพวกเขา
& nbsp;>>> = TPL env.from_string ('' '
... {% สำรอง ""%}
... {text% "INP"%}
... {% endform%}
... {% สำรอง "ข"%}
... {text% "INP"%}
... {% endform%}
... '' ')
& nbsp;>>> พิมพ์ tpl.render (form_vars = {'' {'INP': ''} 'B' {'INP': 'B'}})
บริบทแบบฟอร์มจริงทำหน้าที่วัตถุประสงค์สอง อุปสรรคที่พบกับการมีรูปแบบ HTML หลายในหน้าเดียวก็คือว่าอาจเป็นเรื่องยากที่จะกำหนดรูปแบบที่ถูกส่งมาถ้าทั้งสองรูปแบบมีแอตทริบิวต์การกระทำเดียวกัน บริบทแบบฟอร์มสามารถช่วย
ด้วยการตั้งค่าเริ่มต้นที่แสดงป่านนี้พวกเขาไม่มีผลกระทบโดยตรงต่อการส่งออก แต่ถ้าคุณตั้งค่าคุณสมบัติ form_name_key ในการขยาย, FormPump โดยอัตโนมัติจะแทรกการป้อนข้อมูลที่ซ่อนอยู่ที่ประกอบด้วยค่าบริบทรูปแบบที่เป็นชื่อของมัน (สำหรับ Jinja2 ตั้งนี้กับสภาพแวดล้อม)
& nbsp;>>> env.form_name_key = '__'
& nbsp;>>> = TPL env.from_string ('' '
... {% สำรอง "ตัวอย่าง"%}
... {% endform%}
... '' ')
& nbsp;>>> พิมพ์ tpl.render ()
ค่าส่งแล้วสามารถนำมาใช้เพื่อให้ง่ายต่อการระบุรูปแบบส่งบนเซิร์ฟเวอร์
แต่ใช้คุณลักษณะนี้จะนำขึ้นหนึ่งแทรกซ้อนมากขึ้น! บอกว่าเราต้องการที่จะมีรูปแบบหนึ่งซ้ำแล้วซ้ำอีกหลายครั้งในหน้าเดียว ด้วยการทำซ้ำของแต่ละรูปแบบที่เราต้องการที่จะเปลี่ยนตัวแปรที่ prefilled ยกตัวอย่างเช่นว่าคุณมีรายชื่อของคนใน บริษัท และคุณต้องการที่จะสามารถที่จะแก้ไขปรับปรุงและส่งไปยังหมายเลขโทรศัพท์สำหรับแต่ละคน คุณจึงต้องการ FormName เดียวกันส่งกลับไปยังเซิร์ฟเวอร์ แต่บริบทรูปแบบ _different เมื่อกรอกแบบฟอร์ม ใส่ฟังก์ชั่น form_ctx ซึ่งจะช่วยให้คุณสามารถเปลี่ยนบริบทที่ FormPump เงยหน้าขึ้นค่าจากได้ทันที ฟังก์ชั่น form_ctx ยังช่วยให้คุณสามารถกำหนดชื่อบริบทแบบไดนามิกในรูปแบบของคุณซึ่งฟังก์ชั่นรูปแบบมาตรฐานไม่ได้:
& nbsp;>>> = TPL env.from_string ('' '
...
... {% สำรอง "บุคคล"%}
... {% form_ctx คน ".% d"% บุคคล ['id']%}
... {% ที่ซ่อนอยู่ "id"%}
... {% ฉลาก "โทรศัพท์"%} {{บุคคล ['ชื่อ']}} {% endlabel%}
... {text% "โทรศัพท์"%}
... {% endform%}
...
... {% สำหรับคนที่อยู่ในคน%}
...
... {% endfor%}
...
... '' ')
& nbsp;>>> คน = [{'id' 1 'ชื่อ': 'บิลบี', 'โทรศัพท์': '555-123-4567'},
... {'id': 2, 'ชื่อ': 'คริสซี', 'โทรศัพท์': '555-7654-321'}]
& nbsp;>>> พิมพ์ tpl.render (คน = คน
... form_vars = Dict ([('คน.% d'% บุคคล ['id'] คน) สำหรับคนที่อยู่ในคน]))
& nbsp;
& nbsp;
& nbsp;
& nbsp;
& nbsp;
& nbsp;
ถ้าคุณมองไปข้างต้นคุณจะเห็นสองรูปแบบทั้งที่มีชื่อรูปแบบเดียวกัน แต่มีค่าที่แตกต่างเติมเต็มในขอบคุณที่ form_ctx แบบไดนามิก ฟังก์ชั่นส่งผลกระทบต่อปัจจัยการผลิต form_ctx ทั้งหมดที่มาหลังจากที่มัน คุณสามารถระบุ form_ctx หลายในรูปแบบถ้าคุณต้องการแต่ละคนก่อน empting ก่อนหน้านี้ หมายเหตุ แต่ที่เขาอาจจะกลายเป็นความสับสน stylistically
ข้อผิดพลาดแบบฟอร์ม
ข้อผิดพลาดแบบฟอร์มทำงานเหมือน form_vars คุณสามารถใช้ฟังก์ชั่นข้อผิดพลาดในแม่แบบของคุณเพื่อบ่งชี้ถึงข้อผิดพลาดที่ควรจะไปและจากนั้นระบุ form_error เป็นพจนานุกรมที่ซ้อนกันของพจนานุกรมใด ๆ และมีข้อผิดพลาดทั้งหมดที่คุณต้องการจะใส่ใน. ข้อผิดพลาดใด ๆ ที่ไม่พบค่าที่สอดคล้องกันใน ค้นหา form_error จะถูกปล่อยออกมาจากผลลัพธ์สุดท้าย
>>> = TPL env.from_string ('' '
... {% สำรอง "ตัวอย่าง"%}
... {% ข้อผิดพลาด "field_A"%}
... {text% "field_A"%}
... {% ข้อผิดพลาด "field_B"%}
... {text% "field_B"%}
... {% endform%}
... '' ')
>>> tpl.render พิมพ์ (form_vars = {"ตัวอย่าง": {"field_A": "วาล", "field_B": "Val B"}}
... form_errors = {"ตัวอย่าง": {"field_B": "ข้อผิดพลาด B"}})
ยังทราบว่าปัจจัยการผลิตใด ๆ ที่หาข้อผิดพลาดจะมีข้อผิดพลาด "" ชั้น css ที่เพิ่มให้กับพวกเขา
ข้อความผิดพลาดโดยค่าเริ่มต้นจะออกเหมือนข้างต้นเป็นอันขาด ใน div กับคลาส "ข้อผิดพลาดข้อความ" คุณสามารถระบุรูปแบบข้อความข้อผิดพลาดของคุณเองโดยการกำหนดฟังก์ชั่นในพจนานุกรม error_renderers แล้วระบุแอตทริบิวต์ renderer ในแม่แบบ: {% ข้อผิดพลาด renderer = "กำหนดเอง"%} . โดยค่าเริ่มต้นข้อผิดพลาดทั้งหมดใช้ "เริ่มต้น" แสดงผลที่คุณมีอิสระที่จะแทนที่
ต้องการ
- หลาม
ความคิดเห็นที่ไม่พบ