django จาก rails

posted on 24 May 2008 11:29 by wonam in softdev
เนื้อที่โฆษณา อาจจะเห็นว่าผมหายตัวไปนาน จริง ๆ ตอนนี้นิยมเขียนแบบสั้นจัด+กับเน้นแปะลิงก์ อยู่ที่ wonam.tumblr.com นะครับ

 

ตอนนี้กำลังหัดใช้ django อยู่อย่างสนุกสนาน (ไม่ใช่ว่าเลิกใช้ rails แล้ว แต่เป็นด้วยความจำเป็นและอยากลอง)

ขอจดรายลิงก์ของวิธีการหลาย ๆ อย่างที่ผมได้ทดลองทำไปเอาไว้

1. เนื่องจาก admin site ของ django ดีมาก แต่บางทีเราต้องการแก้ไข หรือเพิ่มความสามารถเข้าไปเช่น ปกติเราจะเพิ่มข้อมูลได้ทีละแถว ทีนี้ เราอยากจะอัพโหลดไปเป็นไฟล์เลย โหลดทีเดียวได้หลายแถว

เราทำได้โดยไปเพิ่มลิงก์ในหน้า template ที่แสดงรายการของวัตถุในโมเดลนั้น แล้วก็เขียนวิวเพิ่ม

รายละเอียดแสดงจากหนังสือ djangobook ตามลิงก์นี้
Chapter 17: Extending Django's Admin Interface

2. ใน rails เราสามารถระบุให้มีการประมวลผลบางอย่าง ก่อนจะเรียกใช้ function ได้ โดยการระบุ before_filter ใน django ค่อนข้างลำบากเล็กน้อย ตรงที่เราจะต้องไปตัดหน้าประมวลผล ดังกล่าวก่อนหน้าฟังก์ชั่น ซึ่งทำได้หลายแบบ

วิธีที่รู้สึกสะดวกสุดคือใช้ decorator ซึ่งเป็นฟังก์ชันที่รับฟังก์ชันอีกอันหนึ่ง แล้วครอบการทำงานของฟังก์ชันนั้น

ดูตัวอย่างการประมวลผลตัดหน้าได้จากส่วน Limiting Access to Logged-in Users จากหนังสือ djangobook หน้า Chapter 12: Sessions, Users, and Registration

หรือดูตัวอย่างที่ผมทำไว้ได้ที่ codepad

3. เนื่องจาก ภาษา template ของ django ไม่ใช่ภาษา Python ดังนั้นการใช้งานในการแสดงผลจึงค่อนข้างจำกัด ผมต้องการแสดงข้อความที่ขึ้นกับตัวแปรใน template หลาย ๆ ตัวก็ทำค่อนข้างลำบาก เนื่องจากเขียนโค้ดภาษา python ลงไปตรง ๆ ไม่ได้ หรือจะเรียกใช้ฟังก์ชัน python ตรง ๆ เลยก็ไม่ได้

วิธีการก็คือ ต้องเขียน tag ขึ้นมาเอง (จริง ๆ ใน rails เราจะไปเขียน helper method เอาไว้ แล้วก็เรียกใช้ได้ แต่ใน django จะยุ่งกว่านั้นเล็กน้อย)

ดูการเขียน tag หรือ filter ได้จากลิงก์นี้
The Django template language: For Python programmers

เนื่องจาก tag ที่เราเขียนทำหน้าที่แค่จัดรูปแบบเท่านั้น ทำให้วิธีการเขียนทำได้ง่ายมาก (ไม่ต่างจากการเขียน helper ใน rails เท่าใดนัก) ใน django มี shortcut ให้ เรียกว่า simple_tag ทำให้เราสามารถเขียนฟังก์ชันเหมือนเป็นฟังก์ชันธรรมดาได้เลย ดูตัวอย่างได้ในหน้าข้างบนเช่นเดียวกันครับ

Comment

Comment:

Tweet

ยังไม่มีเวลาไปดูเลยหง่ะจาน sad smile

โดนโปรเจคทับ HP ลดหนัก

#4 By CyberAlchemist on 2008-07-14 15:11

ลิงก์แรกผิดอ่ะ wonam.tumblr.com

#3 By bact' (203.131.223.201) on 2008-06-24 13:09

เจ้ย... ไม่ต้องก็ได้ มาหัดเพราะว่าต้องเอาไปสอน ตอนนี้ก็ชอบ rails มากกว่าอยู่ดี

#2 By wonam on 2008-06-14 23:22

อ่าวอาจารย์หันไปฝักใฝ่ Django Yo Yo! แล้ว เด๋วผมตามไปบ้าง แฟนพันธุ์แืท้ ฮาๆๆ อาจารย์วันก่อนโทษทีครับที่ผมโทรไป ไม่รู้ว่าอาจารย์อยู่เมกา

ปภณsad smile

#1 By WhenURnotAround (125.25.147.75) on 2008-06-05 16:09