Django 教學2: 增加新的app頁面

安裝 Django 一下子就完成了, 接下來要在 Django 裡增加新的頁面. 這篇文章的資料來源:
https://developer.mozilla.org/zh-TW/docs/Learn/Server-side/Django/skeleton_website

首先, 創立專案:

mkdir locallibrary
cd locallibrary
django-admin startproject locallibrary
cd locallibrary

建立 catalog app:

Linux/macOS 指令:

python3 manage.py startapp catalog

Windows 指令:

py -3 manage.py startapp catalog

註冊 catalog app

編輯檔案: locallibrary/locallibrary/settings.py

每次 startapp 之, 請到 settings.py 增加下面紅字的部份:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'catalog.apps.CatalogConfig',
]

說明: 上面這行, 其實就是出現在檔案: /locallibrary/catalog/apps.py

如果之後有修改 app 裡的內容, 記得用下面指令同步 Django 的監控:

Linus / macOS:

python3 manage.py makemigrations catalog

Windows

py -3 manage.py makemigrations catalog

修改 settings.py 裡其他的設置

檔案: /locallibrary/locallibrary/settings.py

LANGUAGE_CODE = ‘zh-Hant’
TIME_ZONE = ‘Asia/Taipei’

DEBUG. 這個會在 debug 日誌裡輸出錯誤信息,而不是輸入 H​​TTP 的返回碼。在生產環境中,它應設置為 false,因為輸出的錯誤信息,會幫助想要攻擊網站的人。


修改 URL 映射器(urls.py)

檔案: /locallibrary/locallibrary/urls.py 增加下面紅字內容:

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('catalog/', include('catalog.urls')),
]

說明: 遇到網址為 catalog/ 時, 轉發請求到模塊 catalog.urls(/locallibrary/catalog/urls.py 的文件)。

複製上面的 /locallibrary/locallibrary/urls.py 檔案到: /locallibrary/catalog/urls.py , 並修改內容為下:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name="index"),
]

說明: 遇到 /catalog 時, 到 views object 裡, 存取 index method.

修改 /locallibrary/catalog/views.py 內容為下:

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def index(request):
	return HttpResponse("Hello, catelog view.")

path() 函數還指定一個name參數,它是此特定 URL 映射的唯一標識符。 您可以使用該名稱來“反向”映射器,即,動態創建指向映射器旨在處理的資源的 URL。 例如,通過在模板中添加以下鏈接,我們可以使用 name 參數從任何其他頁面鏈接到我們的主頁:

<a href="{% url 'index' %}">Home</a>.

Copy to Clipboard

備註: 我們可以對上面的鏈接進行硬編碼 (例如<a href="/catalog/">Home</a>), 但是如果我們更改主頁的模式 (例如更改為 /catalog/index) 則模板將不再 正確鏈接。 使用反向 URL 映射更加靈活和健壯!


執行網址:
http://127.0.0.1:8000/catalog/

執行畫面:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *