สร้าง view ชื่อ uploadCSV ขึ้นมา เพื่อเป็นหน้าอัพโหลด โดยทำการเพิ่มเข้าไปใน /polls/views.py
และตั้งค่า URL Config สำหรับ uploadCSV() view ใน /polls/urls.py

และสร้าง template สำหรับหน้า Upload Form ขึ้นมา ชื่อว่า upload_csv.html ไปที่ /polls/templates/polls
ซึ่งหน้า template นำโค้ด HTML Form จาก w3schools มาดัดแปลง
จากนั้นเพิ่มลิ้งจากหน้า index ของ polls app เพื่อให้เข้าไปสู่หน้าอัพโหลดได้
จะได้หน้าตาเป็นแบบนี้
จากนั้น ผมได้ไปลองหาอ่านเกี่ยวกับการที่ Django จัดการกับ File ที่อัพโหลดมาจาก https://docs.djangoproject.com/es/1.9/topics/http/file-uploads/
จุดสำคัญคือ เวลา Client ส่ง request มา ถ้ามีไฟล์ ข้อมูลจะถูกเก็บไว้ใน Attribute FILES สังเกตได้จาก request.FILES
ผมจึงลอง upload file และให้ print(request.FILES) ออกมา
สังเกตได้ว่า request.FILES จะเป็น Dictionary ที่มี key ว่า csvFile (มาจาก name ใน upload form)
ซึ่งถ้าไม่มีไฟล์ จะเป็น Empty Dictionry ( {} )
ทีนี้ ผมก็สงสัยว่าไฟล์ที่ upload มานั้น ถูกเก็บไว้ที่ไหน ในเว็บก็บอกไว้ว่า
ผมจึงไปหาวิธีเซฟไฟล์มา จนเจอลิ้งจากเว็บเดิมไป https://docs.djangoproject.com/es/1.9/topics/files/
ผมจึง import default_storage จาก from django.core.files.storage และจัดการ ทดสอบ upload file
ผมจึง import os มาเพื่อทำการเปลี่ยนชื่อไฟล์
และให้ส่วนที่อ่านไฟล์ csv อ่านจากชื่อที่กำหนดไว้ ก็จะสามารถทำการ upload คำถามจากไฟล์ csv ได้แล้ว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น