Tuesday, April 17, 2012

Django Notes

一、建立新的專案
  (1)執行 "django-admin startproject "
  (2)編輯裡的settings.py檔,修改一些需要的參數,如果有需要用到DB的話,在修改完之後要執行"python manage.py syncdb",才會把DB的table建立到DB中。
  (4)執行"python manage runserver <[IP:]port>",可以看到一個空白的網頁。
  (5)__init__.py:讓python知道這個資料夾是一個套件,其中含有相關的模組(model)和程式檔案。
  (6) manage.py:管理用script,和django-admin有相同的作用。
  (7)settings.py:專案主要的參數設定檔。
  (8)urls.py:專案中網頁位址及函數的對應檔,使用正規化(RE)語法!!!

二、靜態網頁
  (1)建立app:"/python manage.py startapp "
  (2)建立一個view:編輯views.py
from django.http import HttpResponse

def main_page(request):
        output = '''
                <html>
                        <head><title>%s</title></head>
                        <body>
                                <h1>%s</h1><p>%s</p>
                        </body>
                </html>
        ''' % (
                        'My first page from Django',
                        'My first page.',
                        'I\'m testing page!'
                        )
        return HttpResponse(output)
  (3) 將view加入/urls.py
urlpatterns = patterns('',
    # Example:
    # (r'^start/', include('start.foo.urls')),

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

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

                                (r'^$', main_page),
)
  (4) __init__.py:讓python知道是一個套件。
  (5)views.py:主要的html內容
  (6)models.py:資料模組

三、資料庫
  參考網址:Django Book

  (1)大原則
      <1>在<app_name>/models.py中,一個class只能對應一個table;
      <2>在<project_name>/settings中,一個db設定只能對應一個db(eg. Name=lab,只對應到lab這個db);
      <3>join還沒看完~~~~~

  (2)常用語法
      <1>"python manage.py validate": 檢查models.py的語法是否有錯誤。
      <2>"python manage.py sqlall <app_name>":顯示create table的sql語法。

  (3)參數
      <1> class Meta option db_table:指定db中table的名稱,預設為" <app_name>_<class name> "
 class <name>(models.Model):
 <colume name> = models.CharField(max_length=64)
.........<colume name> as you need
 class Meta:
    db_table = '<table name>'

.........還沒試完........XD

No comments: