series content :
django settings.py ติดต่อฐานข้อมูล Cloud SQL
DATABASES = { 'default': { 'ENGINE': 'google.appengine.ext.django.backends.rdbms', 'INSTANCE': 'project-id:instance1', 'NAME': 'my_database_name', } }
ตั้งค่า INSTANCE และชื่อฐานข้อมูลตามที่สร้างไว้ใน https://code.google.com/apis/console
ตอนนี้เราอยากทดลองติดต่อฐานข้อมูล Cloud ให้ได้ก่อน โดยยังไม่ต้องเขียน models เอง วิธีง่ายสุดเปิดใช้ django.contrib.admin กับ auth (ระบบ login) ที่มากับ django นี่ล่ะ
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', # Uncomment the next line to enable the admin: 'django.contrib.admin', # Uncomment the next line to enable admin documentation: # 'django.contrib.admindocs', )
Environment Variables - PYTHONPATH
*ENGINE : 'google.appengine.ext.django.backends.rdbms' นี้อยู่ใน lib ของ google_appengine\lib\django_1_3 ซึ่งใน windows เราต้อง set PYTHONPATH ไว้ก่อนไม่งั้นตอนรัน manage.py จะหา lib ไม่เจอ
> Advanced system settings > Advanced tab > Environment Variables..
ใน System Variables เลือก PYTHONPATH click Edit..
ใส่ path ของ sdk เข้าไป เช่น C:\Program files\Google\google_appengine;C:\Program files\Google\google_appengine\lib\django_1_3 ถ้าไม่มี PYTHONPATH กด New... ใส่ค่าเข้าไปเลย
OAuth2 Authentication - syncdb
แล้วจะใช้คำสั่ง manage.py syncdb เพื่อสร้างฐานข้อมูล
ตอนนี้เราสั่งสร้างฐานข้อมูลใน Cloud SQL จากเครื่อง developer จึงต้องมีการ Login ก่อน (Authentication on the Python Development Web Server)
manage.py require oauth2 authentication |
กดอนุญาติ แล้ว appengine จะสร้างเก็บ OAuth2 token ไว้ในเครื่องเรา
%USERPROFILE%\.googlesql_oauth2.dat |
กลับมาดูที่หน้า API Console เปิดดูฐานข้อมูลที่เพิ่งสร้าง (ในตัวอย่าง database ชื่อ my_django_app)
SQL Promt: SHOW TABLES |
แก้ไฟล์ urls.py สำหรับเข้าหน้า admin (https://docs.djangoproject.com/en/1.3/intro/tutorial02/)
from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', 'myapp.views.home', name='home'), # url(r'^myapp/', include('myapp.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)), )
Into the Cloud
*note: ก่อนจะ deploy
ใน app.yaml ต้องตั้งชื่อ application: myapp ตามที่สร้างไว้ใน https://appengine.google.com/
ไฟล์ settings.py แก้ ROOT_URLCONF ไม่ต้องมี namespace (GAE ใช้ build in package)
ROOT_URLCONF = 'urls' #'django-cloudsql.urls'
ทดลองรัน project ในเครื่อง localhost:8080/ ถ้าไม่มีปัญหาก็ใช้ launcher กด deploy หรือใช้คำสั่ง
appcfg.py update myapp
สุดท้าย project นี้ก็ขึ้นไปอยู่บน cloud แล้ว.. http://django-cloudsql.appspot.com/admin/
เป็นอันว่า deploy Django ใน App Engine ใช้งานฐานข้อมูล Cloud SQL ได้สำเร็จ
หลังสงกรานต์จะกลับมาทดลองสร้าง app ต่อ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น