Django 學習筆記 - 數據模型及管理后臺

Django數據模型及管理后臺

啟動一個Django項目

安裝:

$ sudo -H pip install django==1.8.5

創建項目并運行:

$ django-admin startproject [project]
$ mv [project]/* [git folder]/
$ rm -rf [project]
$ cd [project]

加載初始數據 生成sqlite3數據庫

$ python manage.py migrate

運行服務器

$ python manage.py runserver

學會多留意終端輸出的信息

論壇的基本組成部分

  • 用戶
  • 板塊
  • 文章
  • 評論
  • 消息

創建一個小應用(APP)

創建目錄結構:

$ python manage.py startapp [app]

在全局配置中 注冊應用:

在 [project]/setting.py 中的 INSTALLED_APPS 添加 [app]
  • 注意:如果未注冊應用就運行服務會報錯:no such table xxx_xxx
  • 注冊應用后同步數據庫即可解決
  • 未注冊的話,在同步時數據庫不用找到更新的內容。

定義數據模型

file: block/models.py

from django.contrib.auth.models import User # django默認用戶體系
from django.db import models  

class Demo(models.Modle): # django的所有數據模型都要繼承這個類
    # CharField 字符串列
    example4char = models.CharField(max_lenth=30)
    example4int = models.IntegerField()
    # IntegerField 整數列 choices限制整數為1,2,后面是對1,2的描述
    sex = models.IntegerField(chioces=((1, u"男"), (2, u"女")))
    # ForeignKey 外鍵 從外部數據庫引入一個數據表
    # owner的可能值是User里面的行
    # owner 必須是User一個用戶
    # owner_id 就是User的id的字段所有取值的可能
    owner = models.ForeignKey(User, verbose_name="作者")

    # 幾乎所有的數據庫表都應該都有這兩個字段
    create_timestamp = models.DateTimeField(auto_now_add=True)
    last_update_timestamp = models.DateTimeField(auto_add=True)

首期目標數據模型

板塊(Block):
名稱
描述
管理員

創建時間戳
更新時間戳

同步 數據模型 到 數據庫

$ python manage.py makemigrations
$ python manage.py migrate
  • makemigrations 是django對數據庫的改動做記錄
  • migrate 對數據庫進行實際的修改

閱讀文檔

  1. 地址
    The model layer --> models --> Field types
  2. 兩個部分
    Field的屬性 和 Field的類型

強大的Admin

自動生成管理后臺

操作

在總urls.py加入

admin.autodiscover()

在命令中創建一個超級管理員

$ python manage.py createsuperuser

Admin 管理我們的數據表

在 block/admin.py 中添加

from django.contrib import admin
from models import Block

admin.site.register(Block)

美化漢化我們的數據表

在 block/admin.py 中

from django.contrib import admin
from models import Block

class BlockAdmin(admin.ModelAdmin):
    list_display = ("a", "a", "c", "d")
    list_filter = ("e",)  # 過濾器
    search_field = ("f")  # 搜索欄 不能搜索外鍵

admin.site.register(Block, BlockAdmin)  # 在注冊時放在后面

漢化我們的數據表

from django.contrib.auth.models import User 
from django.db import models 

class Demo(models.Modle):
    example4char = models.CharField(u"字符范例", max_lenth=30)
    example4int = models.IntegerField(u"數字范例")
    sex = models.IntegerField(u"性別", chioces=((1, u"男"), (2, u"女")))
    owner = models.ForeignKey(User, verbose_name="作者")

    create_timestamp = models.DateTimeField(auto_now_add=True)
    last_update_timestamp = models.DateTimeField(auto_add=True)
    
    def __unicode__(self):
        return self.example4char

    class Meta:  # 元數據
        verbose_name = u"模板"
        verbose_name_plural = u"模板"  # 復數
  • 在 block/models.py 中
  • 加上第一個參數說明,處理外鍵需要關鍵字參數verbose_name
  • unicode 定義這個數據模型的名字說明
  • Meta class 指的是整個表的特性或特征
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容