13 กันยายน 2557

Published กันยายน 13, 2557 by with 5 comments

เริ่มต้นกับ Django บน Python

สวัสดีครับทุกท่าน บทความนี้เราจะพูดเรื่อง เริ่มต้นกับ Django ครับ Django เป็น Python Web framework  ที่ไดรับความนิยมกันในกลุ่มนักพัฒนา Python คำว่า Django ออกเสียงในภาษาไทยว่า "จังโก้"
โครงสร้างระบบที่สะอาดและสวย พร้อมทั้งสร้าง "admin site" ให้เราอัตโนมัติ เมื่อเราสร้าง models เสร็จครับ และทำ  "multiple applications" ใน project เดียวกันได้อย่างแยกจากกันได้ครับ

ติดตั้ง Django ใน Python

เปิด command line กันเลยครับ
เริ่มแรกให้ติดตั้ง django โดยใช้ pip ด้วยคำสั่งต่อไปนี้ครับ
pip install django django-nose

เว็บแรกที่สร้างโดย Django ชื่อ Hello World


เสร็จจากการติดตั้ง Django แล้วเรามาเริ่มสร้าง project กันนะครับ project ของเราคือ hello_world โดยใช้คำสั่งต่อไปนี้ครับ
django-admin.py startproject hello_world


ถ้าผู้อ่านใช้ Windows เหมือนกับผม อาจมีปัญหาดังนี้ครับ

สามารถแก้ไขได้โดยการอ้างอิงที่ตั้งไฟล์ django-admin.py โดยใช้ python ใช้คำสั่งต่อไปนี้ครับ
python C:\Python**\Scripts\django-admin.py startproject hello_world


** คือ เวชั่นของ python เช่น 34 ครับ
เมื่อเราสร้าง projectแล้ว เราจะได้ไฟล์และโฟลเดอร์ดังนี้ครับ
โฟล์เดอร์ hello_world
-manage.py
-hello_world
---__init__.py
---settings.py
---urls.py
---wsgi.py
ต่อมาใช้ command line เข้าไปยังโฟลเดอร์ชื่อเดียวกันกับชื่อ project ที่เราตั้ง นั่นคือ hello_world
cd hello_world/


แล้วทดสอบ project ที่เราสร้างโดยใช้คำสั่งดังนี้ครับ
python manage.py test


ผลการทดสอบ โอเค

เริ่มรัน project django บน server กัน

ใช้คำสั่ง
python manage.py runserver 0:8000


เปิด browser แล้วเข้าตามที่อยู่นี้
http://localhost:8000/
เราจะพบกับหน้านี้ welcome ของ Django เป็น  project ที่เราสร้างครับ

สร้าง app เพื่อใช้แสดงคำว่า Hello World!

app กับ project ต่างกันตรงที่ project เป็นทั้งหมดของเว็บ app เป็นส่วนงานย่อยรองลงมาจาก project ครับ
มาเริ่มลงมือสร้าง app กันครับ
django-admin startapp hello

หรือใน Windows จะเป็น
python C:\Python**\Scripts\django-admin.py startapp hello



ให้ผู้อ่านเข้าไปที่ โฟลเดอร์ hello_world จากโฟลเดอร์ project ของเราครับ เข้าไปแก้ไขในไฟล์ urls.py ให้ลบโค้ดเดิม
from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'hello_world.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
)

แล้วใส่โค้ดนี้ลงไปแทนที่แล้งบันทึกครับ
from django.conf.urls import patterns, include, url
from hello.views import myfunction

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'sample.views.home', name='home'),
    # url(r'^sample/', include('sample.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'hello/$',myfunction),
)

เมื่อทำขั้นตอนที่ผ่านมา เสร็จแล้วเราเข้ามายัง hello แล้วแก้ไขโค้ดในไฟล์ views.py จากโค้ด
from django.shortcuts import render



# Create your views here.


ให้ใส่โค้ดดังนี้ครับ
from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
def myfunction(request,):
    return HttpResponse("Hello World!")

แล้วบันทึกครับ แล้วลองรัน server กันครับ
python manage.py runserver 0:8000


เข้าไปที่ http://localhost:8000/hello จะพบกับ

Hello World!

โหลดโค้ดตัวอย่างของบทความนี้ได้ที่ https://www.dropbox.com/s/12cmj3bpi1uj08r/hello_world.zip?dl=0
ติดตามบทความต่อไปนะครับ :)
ขอบคุณครับ

5 ความคิดเห็น:

  1. อีกอย่างหนึ่ง ที่เป็นข้อดีของ Django นั่นคือการใช้ BSD license ครับ

    ตอบลบ
  2. ปรับปรุงครั้งที่ 1 วันที่ 13/9/2557 เวลา 23.39 น.

    ตอบลบ
  3. ไม่ระบุชื่อ14 กันยายน 2557 เวลา 05:13

    ขอบคุณครับ

    ตอบลบ
  4. ปรับปรุงครั้งที่ 2 วันที่ 14/9/2557 เวลา 8.10 น.

    ตอบลบ
  5. ไม่ระบุชื่อ15 กันยายน 2557 เวลา 13:59

    เรื่อง django น่าสนใจครับผมกำลังหัดเขียนอยู่ ยังไงเป็นกำลังใจให้ทำต่อครับ จะเข้ามาอ่านบ่อยๆ

    ตอบลบ

แสดงความคิดเห็นได้ครับ :)