260 likes | 535 Views
VIDA. Training django. Template + VIEW django. I- Template. 1) Giới thiệu : Đơn giản chỉ là 1 text file Format : html, xml, csv … Template được trả về thông qua đối tượng HttpResponse trong views.py( Xem Tại đây ). I- Template. 2)Tag + Filter ( quan trọng & thường dùng ) :
E N D
VIDA Training django Template + VIEW django
I- Template • 1) Giớithiệu: • Đơngiảnchỉlà 1 text file • Format : html, xml, csv… • Template đượctrảvềthông qua đốitượngHttpResponsetrong views.py(XemTại đây )
I- Template • 2)Tag + Filter (quantrọng & thườngdùng): • Sửdụngthẻ {% tag %} {% endtag %} • Dùngđểtạo text cho output, tạovònglặphoặc logic xữlýcho template.
I- Template • 2)Tag + Filter (quantrọng & thườngdùng): • {{ variable }} • In ragiátrịcủabiến • Địnhdạngbiến • Cóthểtruyxuấtcác attribute củabiến qua dấu “.”
I- Template • 2)Tag + Filter (quantrọng & thườngdùng): • {% extends%} • Thừakếtừ 1 template khác • MasterPagesửdụng : • {% block name_block%}{% endblock %} đểtạocáckhối • Trang master chứacấutrúc • ChildrenPage: • Sửdụng block ở master chứadữliệu
I- Template • 2)Tag + Filter (quantrọng & thườngdùng): • {% extends%} • Vídụ: • Master : • Children: • Kếtquả:
I- Template • 2)Tag + Filter (quantrọng & thườngdùng): • {% include %} • Chèn 1 template khác • {% include ”other_page.html” %} • Vídụ:
I- Template 2)Tag + Filter (quantrọng & thườngdùng): + Cycle: chukỳcủabiến + For: + If
I- Template 2)Tag + Filter (quantrọng & thườngdùng): + Boolean operator: and, or, not + (==, <=, >=, <, >, in, not in) +
I- Template 2)Tag + Filter (quantrọng & thườngdùng): Filter:
I- Template 2)Tag + Filter (quantrọng & thườngdùng): Filter:
I- Template 3)Cáchtạovàsửdụng custom Filter: + Tạo 1 folder templatetagstrong app + Tạo file .pyvới name làtên filter muốntạo + Edit file filter vừatạo: + Khaibáothưviện template + Tạo function filter + Đăngký filter Vídụ:
I- Template 3)Cáchtạovàsửdụng custom Filter: Vídụ: + Sửdụng: Dùng tag {% load name_filter %} Vídụ:
I- Template 4)Cáchtạovàsửdụng custom Tag: + Tạo 1 folder templatetagstrong app + Tạo file .pyvới name làtêntagmuốntạo + Edit file tag vừatạo: + Khaibáothưviện template + Tạo function compiling + Tạo function rendering + Đăngkýtag Vídụ:
I- Template 4)Cáchtạovàsửdụng custom Tag: Cáchthứchoạtđộng: + Django Template hoạtđộngtheo 2 bước: Compiling và rendering + Một template thôđượcphân chia thànhcác “node” , mỗi node là 1 instance củadjango.template.Nodevàcó 1 hàm render() + 1 compiled là 1 list các node Vìvậy, đểtạocác custom tag chomìnhcầntạo function compile và function render()
I- Template 4)Cáchtạovàsửdụng custom Tag: 2customtagthườngdùng: + Assignment tag: Là tag đượcdùngthông qua biếnphụđểlưugiátrị. - Cúpháp: {% name_tag “agr” as name_variable %} Vídụ:
I- Template 4)Cáchtạovàsửdụng custom Tag: 2customtagthườngdùng: + Block tag: Là tag đượcdùngthông qua 1 cặp tags - Cúpháp: {% name_open_tag %}{% end_tag %} Vídụ:
I- Template 4) Nơilưutrữ:
II- Views.py • Giốngnhư controller trongcác framework khác, lànơitiếpnhận request, xữlývà render kếtquảvềcho client.
II- Views.py • Import cácđốitượngcầndùngcho view(model, request…) • Khaibáo function xữlý:
II- Views.py • Khimộttrangđược request từ client, djangosẽtạo 1 đốitượngHttpRequest, đốitượngnàysẽlàmthamsốthứnhấtchocác function xữlýtrong view. • Vídụ: • Request method Http baogồm method “POST” và “GET” • Đểkiểmtra request ta sửdụng: • Lấydữliệutừ request: • Method GET: data1 = request.GET[param1]… • Method POST: data1 = request.POST[param1]…
II- Views.py • Đểkiểmtra 1 request cóphảilàXMLHttpRequest (ajax): Ta sửdụngrequest.is_ajax() Function nàysẽtrãvề true nếunhư request đólà 1 XMLHttpRequest. • Note: Sửdụngrequire_http_methods ở đầu function xửlýđểchophéptruyxuấtthông qua method http nhấtđịnh.
II- Views.py • Saukhitiếnhànhxửlýxong, view trảvểkếtquảcóthể là 1 đoạn text, 1 trang html…hoặccóthểlà 1 lệnhchuyểnhướng. đểlàmđiềuđónóphảithông qua đốitượngHttpResponse + Đểchuyểnhướng: + Để render 1 template: + Đểtrảvề 1 đoạn text:
II- Views.py • Trong view ta cóthể get template bằngcách: