設計部落格資料方案,既針對部落格定義資料模型.這裡,模型表示為乙個python類,並定義為django.db.models.model的子類.其中,每個屬性視為乙個資料庫欄位.django針對定義於models.py檔案中的每乙個模型建立乙個表.當建立乙個模型時,django提供了乙個使用的api,從而可方便地查詢資料庫中的物件.
首先定義乙個post模型,並向部落格應用程式的models.py檔案中新增下列**行:
from django.db importview codemodels
from django.utils import
timezone
from django.contrib.auth.models import
user
class
post(models.model):
status_choices =(
('draft
','draft'),
('published
','published'),
)title = models.charfield(max_length=250)
slug = models.slugfield(max_length=250,unique_for_date='
publish')
author =models.foreignkey(user,
on_delete=models.cascade,
related_name='
blog_posts')
body =models.textfield()
publish = models.datetimefield(default=timezone.now)
created = models.datetimefield(auto_now_add=true)
updated = models.datetimefield(auto_now=true)
status = models.charfield(max_length=10,
choices=status_choices,
default='
draft')
class
meta:
ordering = ('
-publish',)
def__str__
(self):
return self.title
這表示為部落格帖子的資料模型.下面檢視針對該模型定義的相關字段,如下所示:
模型內的meta類包含了元資料.預設狀態下,當查詢元資料時,將通知django對publish欄位中的結果以降序排序.通過負號字首,可指定降序排列.據此,最新發布的帖子將首先加以顯示
__str__()方法為預設的人們可讀的物件表達方式,django將在多處對其加以使用,如站點管理.
1.3.1 啟用應用程式
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'', #
]blogconfig類定義了應用程式的配置內容.當前,django了解到應用程式針對專案處於活動狀態,並可載入其模型
1.3.2 設定並使用遷移方案
首先需要針對post模型建立初始遷移.在專案的根目錄中,可執行下列命令:
python manage.py makemigrations blog對應輸出結果如下:
migrations fordjango在blog應用程式的migrations目錄內僅生成了0001.inital.py檔案,我們可以開啟改檔案檢視遷移結果.遷移指定了在資料庫中執行的其他遷移和操作的依賴關係,以便與模型變化同步.'blog':
blog\migrations\0001_initial.py
- create model post
下面考察django在資料庫中執行的sql**,以建立模型表.sqlmigrate命令將使用到遷移名稱並在不執行sql的情況下返回其sql.執行以下命令並檢查第一次遷移的sql輸出結果:
python manage.py sqlmigrate blog 0001對應的輸出結果如下:
begin;實際結果輸出取決所用的資料庫,上述輸出結果為sqlite所生產.不難發現,django通過組合應用程式名稱以及模型(blog_post)的小寫名稱生產表名.另外,還可以使用db_table屬性在模型的meta類中為模型指定乙個定製的資料庫名稱.django對每個模型自動生成主鍵,但也可在模型欄位中指定primary_key=true以對此進行覆寫.此處,預設的主鍵表示為id列,並由乙個整數構成,同時實現自動遞增.該列對應於自動新增至模型中的id欄位.----create model post
--create table
"blog_post
" ("
id" integer not null primary key autoincrement, "
title
" varchar(250) not null, "
slug
" varchar(250) not null, "
body
" text not null, "
publish
" datetime not null, "
created
" datetime not null, "
updated
"datetime not null,
"status
" varchar(10) not null, "
author_id
" integer not null references "
auth_user
" ("id"
));create index
"blog_post_slug_b95473f2
" on "
blog_post
" ("
slug");
create index
"blog_post_author_id_dd7a8485
" on "
blog_post
" ("
author_id");
commit;
接下來將資料庫與新模型同步.執行一下命令來應用現有遷移:
python manage.py migrate對應輸出結果如下所示:
operations to perform:當編輯models.py檔案,以新增、移除或修改現有模型的字段時,或者新增新的方法時,則需要利用makemigrations命令建立新的遷移.該遷移使得django可跟蹤模型的變化狀態.隨後,還需將其與migrate命令一起應用,以使資料庫與模型保持一致.running migrations:
部落格第13周
1 對稱加密過程由那三部分組成 加密 傳送方將原始資訊經過對稱金鑰加密形成密文 資料傳輸 密文通過網路傳送到接收方 解密 接收方收到密文後用對稱金鑰進行解密產生明文 2 使用 openssl 中的 aes 對稱加密演算法對檔案 file.txt 進行加密,然後解密 openssl enc e aes...
部落格資料庫設計
系統主要完成以下幾方面的功能 建表語句 create table zj users user id bigint 20 not null auto increment comment 使用者id user ip varchar 20 not null comment 使用者ip user name ...
MySQL 13 資料庫設計
資訊系統從立項到上線執行需要經歷需求分析 系統分析 系統實現 維護 4個階段。資料庫設計的基本步驟 1 需求收集與分析 2 概念結構設計 3 邏輯結構設計 4 物理結構設計 5 實施 執行和維護 er 圖 實體 聯絡圖 entity relation diagram 用來建立資料模型,在資料庫系統概...