อ่านว่า แจงโก้ หรือ ดีแจงโก้ ก็ได้
แจงโก้นั้นเป็น Web Framework ที่พัฒนาขึ้นจากภาษาไพธ่อน สำหรับการพัฒนาเวบดังกล่าว จะเรียกว่าเวบนั้นๆว่า Project , ใน 1 Project จะมีหลายๆ Application ข้างใน
วิธีที่จะอธิบายดัวต่อไปนี้ สามารถ ดาวน์โหลดโค๊ดตัวอย่างได้จาก mikelibrary.tar.gz (username:klainfo | password:1234)
ดาวน์โหลดตัว ติดตั้งได้ที่ Official Sites หรือ Mirror KU
แตกไฟล์ ด้วยคำสั่ง
$ tar -zxvf Django-1.1-rc-1.tar.gzและติดตั้งด้วยคำสั่ง
$ sudo python setup.py install
ในที่นี้ จะยกตัวอย่างใช้ชื่อ Project Name ว่า MikeLibrary
$ django-admin.py startproject MikeLibraryภายใน directory Blog จะประกอบด้วยไฟล์ต่างๆ ดังนี้
$ chmod +x manage.py <usage:> $ ./manage.py <command>
settings.py
import os.path PROJECT_DIR = os.path.dirname(__file__) DATABASE_ENGINE = "sqlite3" DATABASE_NAME = "lib.db" TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. os.path.join(PROJECT_DIR,'templates'), # <------ Add this line ########## )
publication หมายถึง ผลงานตีพิมพ์ทางวิชาการ
$ ./manage.py startapp publication
settings.py
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', # <------ add this two lines ########### 'MikeLibrary.publication', # )
$ ./manage.py syncdb
publication/views.py
from django.shortcuts import render_to_response def index(request): return render_to_response("publication/index.html")
urls.py
urlpatterns = patterns('', (r'^$', 'MikeLibrary.publication.views.index'), # <--- add this line ######### )
เราจะสร้างหน้า base.html ไว้ให้หน้าอื่นๆ สำหรับ app อื่นๆ inherit ไปใช้ได้
เราจะระบุ path ที่ใช้เก็บแฟ้ม static ใน settings.py โดยการเพิ่มบรรทัด เช่น
STATIC_DOC_ROOT = '/full/path/to/media'
โดยที่ /ใส่ path ไปยัง/media คือ path ไปที่ไดเร็กทอรีที่เราเก็บแฟ้มเหล่านี้ไว้ (โดยปกติเราจะสร้างไดเร็กทอรีชื่อ media ไว้ใน project)
จากนั้นไปแก้แฟ้ม urls.py โดยก่อนอื่นเราต้อง import โมดูลสำหรับเรียกใช้ค่าที่เราตั้งไว้ในแฟ้ม settings.py โดยเพิ่มบรรทัด
from django.conf import settingsไว้ตอนต้นโปรแกรม
แล้วก็ไปเพิ่มบรรทัดด้านล่างลงในส่วน urlpatterns เพื่อเรียกใช้ view สำหรับแจกจ่าย static file ที่ Django เตรียมไว้ให้
urls.py
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_DOC_ROOT}),
site_media/ ด้านบนระบุ URL สำหรับอ้างถึงแฟ้ม static โดยเราอาจจะเปลี่ยนได้ แต่ต้องระวังไม่ให้ซ้ำกับ url ของ ADMIN_MEDIA_PREFIX ที่ระบุไว้ตอนแรกก่อนหน้า
เวลาเราจะเรียกแฟ้มเหล่านี้เราก็เรียกด้วย http://localhost:8000/site_media/แฟ้ม เป็นต้น
publication/models.py
# _*_ encoding: utf-8 _*_ from django.db import models class Publication(models.Model): author = models.CharField(max_length=100,verbose_name='ชื่อผู้แต่ง') title = models.CharField(max_length=100,verbose_name='ชื่อบทความ') conference = models.CharField(max_length=100,verbose_name='Conference') year = models.CharField(max_length=100,verbose_name='ปีที่ตีพิมพ์') def __unicode__(self): return self.title
และสั่ง syncdb อีกครั้ง
$ ./manage.py syncdb
urls.py
# Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() # Uncomment the next line to enable the admin: (r'^admin/', include(admin..urls)),
settings.py
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', # <------ add this two lines ########### 'MikeLibrary.publication', # )
และสั่ง syncdb อีกครั้ง
$ ./manage.py syncdb
publication/admin.py
from django.contrib import admin from models import Publication admin.site.register(Publication)
(โปรดติดตาม)