วันอังคารที่ 2 พฤษภาคม พ.ศ. 2560

ลองใช้งาน Heroku ที่เป็น PaaS

สำหรับการนำ App ที่สร้างใน django ไป deploy ลงบน Heroku (Platform as a service) นั้น
จะต้องมีขั้นตอนเตรียมการ pack ให้เขารู้ก่อนว่า app ของเราต้องการใช้อะไรบ้าง


  • ทำการสมัครสมาชิกเว็บ Heroku
  • ติดตั้ง HerokuCLI สามารถเข้าไปดูได้ที่ Heroku
  • ติดตั้ง Virtual Environment เพื่อให้ไม่มีปัญหา เช่น projectA ใช้ django 1.8 projectB ใช้ django 1.10 กรณีติดตั้ง virtualenv จะรันได้ไม่มีปัญหา
  • พิมพ์คำสั่ง เพื่อใช้งาน virtualenv ในโฟลเดอร์ project เรา
    • source venv/bin/activate
  • ทำตามขั้นตอนไป  จนถึงขั้นตอน Build your app จะต้องติดตั้ง gunicorn เพิ่ม
  • จากนั้นทำตามขั้นตอน นี้ แต่ยังไม่ต้อง git push
  • เพราะว่ายังไม่ได้ตั้ง runtime ว่าจะให้ใช้ python version ไหน
  • เข้าไปที่โฟลเดอร์ project เรา สร้างไฟล์ runtime.txt พิมพ์ python-3.6.1 ลงไปแล้ว save
    • จากนั้นก็ commit อีกครั้ง ว่าเปลี่ยน runtime แล้ว
  • ตั้ง path ของ static โดยเข้าไปดูที่ reference 1 และ 3 แล้ว commit อีกรอบว่าตั้ง path แล้ว
    • ref 1 เข้าไปใน project/settings.py และเพิ่มบรรทัดข้างล่างลงไป
    • PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles') STATIC_URL = '/static/' # Extra places for collectstatic to find static files. STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), )
  • เข้าไปใน settings.py เพื่อเพิ่ม allow_host ตามที่ url ที่เขาให้มา
    • หรือ อาจจะลอง push ไปก่อน จะขึ้น Disallow host at ...
    • จากนั้นเข้าไปแก้ใน settings.py เช่น
    • ALLOWED_HOSTS = ['gentle-springs-97441.herokuapp.com'] 
  •  จากนั้น push แล้วก็น่าจะใช้งานได้เลย
reference
  1. https://simpleisbetterthancomplex.com/tutorial/2016/08/09/how-to-deploy-django-applications-on-heroku.html
  2. https://devcenter.heroku.com/articles/deploying-python
  3.  http://stackoverflow.com/questions/12800862/how-to-make-django-serve-static-files-with-gunicorn
  4. http://stackoverflow.com/questions/40667519/why-is-django-throwing-error-disallowedhost-at

หรือ อีกวิธีคือให้ heroku connect ไปที่ github ของเรา



สามารถเข้าไปดู app ได้ที่
https://github.com/sovernut/scammerlist/commits/linux

Webapp:
https://gentle-springs-97441.herokuapp.com/





วันจันทร์ที่ 1 พฤษภาคม พ.ศ. 2560

การใช้ template inheritence ใน Django

การใช้ template inheritence คือการสืบทอดเทมเพลต เพื่อให้ไม่ต้องเขียนโค้ดหน้าเว็บๆซ้ำๆ
เราจะมีหน้าหลักอันเดียว (base.html or parent) ภายในนั้นจะมีตัวแปร
หน้าที่สืบทอด (children) จะสามารถเปลี่ยนแปลงตัวแปรนั้นๆได้


เช่น base.html (Parent)

มีตัวแปรคือ
block header
block maincontent
block table_id
block table

ไฟล์ Children เช่น index.html

มีการใส่ข้อมูลตรงส่วนของ block maincontent คือ จะนำเอาข้อมูลในกล่องนี้ไปแสดงโดยมี
เทมเพลต base.html เป็นหลัก
ส่วนตัวแปรที่ไม่ได้ถูกแทนที่จะไม่แสดง

สรุปก็คือสามารถประหยัดเวลาในการเขียนโค้ดหน้าเว็บซ้ำเดิม หรือ รูปแบบเดียวกันครับ

Slide

commit เพิ่มเติม : เพื่ม userstory, bookmark

>>  add userstory ทำการเพิ่ม userstory ใน functional tests >>  add bookmark for user เพิ่มระบบ Bookmark โดยการสร้าง model ขึ...