1. 程式人生 > 實用技巧 >Django基礎3--資料庫配置及建立模型

Django基礎3--資料庫配置及建立模型

1.資料庫配置
  • 開啟 settings.py 。這是個包含了 Django 專案設定的 Python 模組,配置檔案使用 SQLite 作為預設資料庫,後面實際開發專案中也可以換成其他的資料庫(MySQL,MongoDB....)
  • ENGINE -- 可選值有 'django.db.backends.sqlite3''django.db.backends.postgresql''django.db.backends.mysql',或 'django.db.backends.oracle'
2.註冊APP
  • settings.py 下INSTALLED_APPS都是註冊的應用
# Application definition

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

'django.contrib.admin', 管理員站點 'django.contrib.auth', 認證系統 'django.contrib.contenttypes', 內容型別框架 'django.contrib.sessions', 會話框架 'django.contrib.messages', 訊息框架 'django.contrib.staticfiles', 管理靜態檔案框架

3.資料庫遷移
# 伊洛Yiluo 公眾號:伊洛的小屋
# https://yiluotalk.com/
python manage.py migrate
  • migrate命令只會為在 INSTALLED_APPS
    裡聲明瞭的應用進行資料庫遷移
(django) ➜  AutoPlatform python manage.py migrate 
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK
  • 如上遷移完成
  • 資料庫裡已經生成對應的表
4.建立模型
  • 定義模型 - 也就是資料庫結構設計和附加的其它元資料
  • 設計自己的模型,首先看看需要哪些資料
# 作者:伊洛Yiluo 公眾號:伊洛的小屋
# 個人主頁:https://yiluotalk.com/
# 部落格園:https://www.cnblogs.com/yiluotalk/
from django.db import models

# Create your models here.


class ProjectInfo(models.Model):
    """ 專案資訊模型 """
    project_name = models.CharField(max_length=30)
    dev = models.CharField(max_length=20)
    tester = models.CharField(max_length=20)
    add_data = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        # 返回專案名稱
        return self.project_name

  • 建立一個專案資訊的類繼承model,其中屬性分別為專案名稱,開發人員,測試人員,新增日期
  • DateTimeField記錄日期和時間的資料,auto_now_add=True指的是每當使用者建立新主題時,這都讓Django將這個屬性自動設定成當前日期和時間
  • Django呼叫方法__str__()來顯示模型的簡單表示
5.啟用模型
  • 要使用模型,必須讓Django將應用程式包含到專案中,來開啟settings.py,找到下面這段程式碼
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
  • 將自己的應用新增到INSTALLED_APPS
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # My app
    'autoapi',
]
  • 讓Django修改資料庫,使其能夠儲存模型
(django) ➜  AutoPlatformpython manage.py makemigrations autoapi
Migrations for 'autoapi':
  autoapi/migrations/0001_initial.py
    - Create model ProjectInfo

  • 命令makemigrations讓Django確定該如何修改資料庫,使其能夠儲存與我們定義的新模型相關聯的資料。輸出表明Django建立了一個名為0001_initial.py的遷移檔案
  • 再次migrate一下
(django) ➜  AutoPlatform python manage.py migrate 
Operations to perform:
  Apply all migrations: admin, auth, autoapi, contenttypes, sessions
Running migrations:
  Applying autoapi.0001_initial... OK
  • 遷移OK
6.總結

模型需要這三步

  • 編輯 models.py 檔案,改變模型。
  • 執行 [python manage.py makemigrations] 為模型的改變生成遷移檔案。
  • 執行 [python manage.py migrate] 來應用資料庫遷移。