建立專案

  1. 在終端機中下達指令建立一個新的專案

    django-admin.py startproject mysite

    打完指令後,會產生一個 mysite 的資料夾

    mysite/
        manage.py
        mysite/
            __init__.py
           settings.py
           urls.py
           wsgi.py               
    
  2. 修改 mysite/mysite/settings.py,設定伺服器資料與時區。

    ALLOWED_HOSTS = ['*'] TIME_ZONE = 'Asia/Taipei'
  3. 啟動 django

    cd mysite python manage.py runserver 0.0.0.0:80
  4. 在終端機會看到以下的訊息

  5. 開啟瀏覽器,在網址列輸入http://localhost/,主機會回應 Django 網站畫面如下:

建立應用程式

我們要建立一個圖文展示的應用程式,在終端機按Ctrl+C中止網站服務,並在命令提示模式下執行以下指令。

python manage.py startapp show

下了這個指令後,會在 mysite 底下新增一個 show 資料夾,檔案結構如下:

mysite/ manage.py mysite/ show/ migrations/ __init__.py admin.py apps.py models.py tests.py views.py

修改 mysite/mysite/settings.py 以註冊應用程式,新增第 8 行:

INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'show', )

要完成一個可以回應給使用者的畫面,需要有兩個步驟:

  1. 設定網址(urls.py)

    打開 mysite/mysite/urls.py 裡面已有的設定如下:

    from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]

    新增第 3, 7 行

    from django.contrib import admin from django.urls import path from show import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.homepage), ]
  2. 撰寫視圖函式(views.py)

    打開 mysite/show/views.py 修改為以下程式碼:

    from django.shortcuts import render from django.http import HttpResponse ## Create your views here. def homepage(request): return HttpResponse('歡迎光臨魏小良的網站')

在終端機輸入以下指令以執行網站服務:

python manage.py runserver 0.0.0.0:80

然後在瀏覽器的網址列中輸入 http://localhost/ 來測試你的網站,應該會看到這行訊息:

使用模版

  1. mysite 專案資料夾下建立模版目錄 templates,新增後整個專案的資料夾結構應該如下(省略 mysite, show 等子資料夾的內容):

    mysite/ manage.py mysite/ show/ templates/
  2. 修改 mysite/mysite/settings.py 第 58 行

    TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['templates',], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
  3. 在模版目錄中建立網頁模版 index.html

    <html> <head> </head> <body> 歡迎光臨我的網站 </body> </html>
  4. 修改 mysite/show/views.py

    from django.shortcuts import render_to_response def homepage(request): return render_to_response('index.html')

餐廳網站

  1. 建立靜態圖片目錄 mysite/static/images,並修改專案設定檔 mysite/mysite/settings.py 來指定靜態檔案的存放路徑。請新增第 123-125 行

    # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.1/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
  2. 上傳圖片到 mysite/static/images/ 資料夾內。

    圖片 檔名
    food1.png
    food2.png
    food3.png
  3. 修改 mysite/template/index.html 第 5-8 行

<html> <head> </head> <body> 歡迎光臨我的網站<BR> <a href="/food/1">1號餐<BR> <a href="/food/2">2號餐<BR> <a href="/food/3">3號餐<BR> </body> </html>
  1. 修改 mysite/mysite/urls.py 第 8 行

    from django.contrib import admin from django.urls import path from show import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.homepage), path('food/<int:kind>/', views.food), ]
  2. 打開 mysite/show/views.py,修改為以下程式碼:

    from django.shortcuts import render_to_response def homepage(request): return render_to_response('index.html') def food(request, kind): return render_to_response('food.html', {'kind':kind})
  3. 新增 mysite/templates/food.html

    <html> <head> </head> <body> 您點的是{{kind}}號餐<BR> <img src="/static/images/food{{kind}}.png"> </body> </html>