2024年2月24日 星期六

Django 5.0:建置學生通訊錄資料庫

參考資料:Python架站特訓班django最強實戰

1..打開cmd,輸入mkvirtualenv django_first命令建立虛擬環境。


2.輸入pip install django建立Django套件。


3.輸入django-admin startproject students來建立Djano專案,利用cd students來切換目錄。


4.輸入Python manage.py startapp studentsapp來建立應用程式。


5.輸入python manage.py migrate指令進行模型(Model)與資料庫(Database)的同步。


6.輸入python manage.py runserver指令來啟動Server。


7.打開瀏覽器,輸入http://127.0.0.1:8000/網址,開啟首頁。


8. 修改students/settings.py

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
"""
Django settings for students project.

Generated by 'django-admin startproject' using Django 5.0.2.

For more information on this file, see
https://docs.djangoproject.com/en/5.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/5.0/ref/settings/
"""

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-52y=6w_01z!@bcyzkrs@eyl(^s0li20(i8$gokwhbvw-gcj59h'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'studentsapp',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'students.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR/'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',
            ],
        },
    },
]

WSGI_APPLICATION = 'students.wsgi.application'


# Database
# https://docs.djangoproject.com/en/5.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


# Password validation
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/5.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.0/howto/static-files/

STATIC_URL = 'static/'

# Default primary key field type
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

9.在students/urls.py新增一條鏈結。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"""
URL configuration for students project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/5.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from studentsapp.views import index

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

10.在studentsapp/views.py下,新增index()函式。

1
2
3
4
5
6
7
8
from django.shortcuts import render
from studentsapp.models import student

# Create your views here.

def index(request):
    students = student.objects.all().order_by('id')
    return render(request, "index.html", locals())

11.在studentsapp/models.py下,新增student資料模型。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from django.db import models

# Create your models here.
class student(models.Model):
    cName = models.CharField(max_length = 20, null = False)
    cSex = models.CharField(max_length = 2, default = 'M', null = False)
    cBirthday = models.DateField(null = False)
    cEmail = models.CharField(max_length = 50, blank = True, default = '')
    cPhone = models.CharField(max_length = 50, blank = True, default = '')
    cAddr = models.CharField(max_length = 255, blank = True, default = '')

    def __str__(self):
        return self.cName

12.重新整理網頁

在執行網站的cmd畫面中,也看到錯誤訊息

13.模型與資料庫同步,請執行下列命令:
python manage.py makemigrations
python manage.py migrates

14.重新整理畫面

15.新增超級使用者帳號
python manage.py createsuperuser
帳號:admin
密碼:1234

15.在studentsapp/admin.py新增後台管理student資料庫的程式

1
2
3
4
5
from django.contrib import admin
from studentsapp.models import student

# Register your models here.
admin.site.register(student)

16.登錄後台

17.查看student資料庫

18.按下上圖students旁的Add鈕,新增一筆資料。

19.按下上圖的SAVE鈕。

20.重新整理前台畫面


沒有留言:

張貼留言