Django 學習筆記(四) --- 模型和數據庫

人生苦短 ~ html

Tips:僅適用於 Python 3+(反正差異不大,py2 改改也能用)。由於據 Python 之父 Guido van Rossum 說會在 2020 年中止對 Python 2 的官方支持,因此若是你還在使用 Python 2 那就要早作準備了,畢竟沒有官方的支持使用起來也不順心的。python

 

1. 配置 MySQL 數據庫mysql

若是你沒安裝 mysql 驅動,能夠執行如下命令安裝:sql

pip install mysqlclient

咱們在項目的 settings.py 文件中找到 DATABASES 配置項,將其信息修改成:數據庫

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django
        'NAME': 'mydjango',    # 數據庫名稱
        'USER': 'root',    # 用戶名
        'PASSWORD': '123456',    # 密碼
        'HOST':'localhost',    # 地址
        'PORT':'3306',    # 端口
    }
}

 

2. 配置模型 Modelsdjango

Django 規定,若是要使用模型,必需要建立一個 app。但咱們此次就不在新建立了,使用以前建立的 app mydjango瀏覽器

咱們修改模型 mydjango/models.py 文件,修改內容以下:服務器

from django.db import models

class TUser(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField()

這裏若是不自定義主鍵,django 將會自動幫咱們建立 id 主鍵。app

表名組成結構爲:應用名_類名(如:mydjango_tuser)。函數

以上的類名錶明瞭數據庫表名,且繼承了 models.Model,類裏面的字段表明數據表中的字段(name),數據類型則由 CharField(至關於 varchar)、DateField(至關於 datetime)、IntegerField(至關於 int), max_length 參數限定長度。

想查看詳細的數據類型信息請移步 #Django models 經常使用數據類型

 

3. 建立表結構

配置完以上步驟後執行如下命令建立表結構:

python manage.py migrate   # 建立表結構
python manage.py makemigrations mydjango  # 讓 Django 知道咱們在咱們的模型有一些變動
python manage.py migrate mydjango  # 建立表結構

建立成功後的輸出內容,對應的表結構,以及模型表字段

 

4. 數據庫操做

在咱們的 App mydjango 模型中建立一個文件 dbtest.py,用於數據庫的增刪改查操做。

打開文件 \mydjango\urls.py,修改成以下內容:

from django.urls import path
from mydjango import views, dbtest

urlpatterns = [
    path('hello/', views.hello),
    path('index/', views.index),
    path('db/addUser/', dbtest.addUser),
    path('db/getUserAll/', dbtest.getUserAll),
    path('db/updateUser/', dbtest.updateUser),
    path('db/delUser/', dbtest.delUser),
]

打開文件 dbtest.py

增長數據。須要先建立對象,而後再執行 save 函數,至關於 SQL 中的 INSERT:

from django.http import HttpResponse
 
from mydjango.models import TUser
 
# 數據庫操做,增長用戶
def addUser(request):
    try:
        tUser = TUser(name='cq', age=19)
        tUser.save()
        return HttpResponse("<p>數據添加成功!</p>")
    except:
        return HttpResponse("<p>數據添加失敗</p>")

打開地址 http://127.0.0.1:8000/mydjango/db/addUser/,不出意外就和我同樣添加成功:

查詢數據。Django 提供了多種方式來獲取數據庫的內容。

# 獲取全部用戶數據
def
getUserAll(request): response = "" try: # 經過 objects 這個模型管理器的 all() 得到全部數據行,至關於 SQL 中的 SELECT * FROM list = TUser.objects.all() # 輸出全部數據 for var in list: response += "id = " + str(var.id) + ",name = " + var.name + ",age = " + str(var.age) + "<br />" return HttpResponse("<p>" + response + "</p>") except: return HttpResponse("<p>查詢數據失敗</p>")

以上代碼是查詢所有的數據, str(var.id) 和 str(var.age) 表示的是把 int 類型數據轉爲 string 類型,由於 HttpResponse 只能返回 string 類型,否則會拋異常。

其餘查詢方式:

# filter 至關於 SQL 中的 WHERE,可設置條件過濾結果
response = TUser.objects.filter(id=1) 

# 獲取單個對象
response = TUser.objects.get(id=1)

 更新數據。修改數據可使用 save()  或 update():

# 更新用戶數據
def updateUser(request):
    try:
        # 修改其中一個 id=1 的 name 字段,再 save,至關於 SQL 中的 UPDATE
        tUser = TUser.objects.get(id=1)
        tUser.age = 21
        tUser.save()
        return HttpResponse("<p>數據修改爲功!</p>")
    except:
        return HttpResponse("<p>數據修改失敗</p>")

其餘更新方式:

# 另一種方式,update 方法
TUser.objects.filter(id=1).update(age=21)

# 修改全部的列
TUser.objects.all().update(age=18)

刪除數據。刪除數據庫中的對象只需調用該對象的 delete() 方法便可:

# 刪除用戶數據
def delUser(request):
    try:
        # 刪除 id=1 的數據
        tUser = TUser.objects.get(id=1)
        tUser.delete()
        return HttpResponse("<p>數據刪除成功!</p>")
    except:
        return HttpResponse("<p>數據刪除失敗</p>")

其餘刪除方式:

# 另一種方式
TUser.objects.filter(id=1).delete()
    
# 刪除全部數據
TUser.objects.all().delete()

 

5. 激活管理界面

首先確認你的 HelloDjango/urls.py 文件是否有以下配置:

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

若是有的話打開服務器輸入網址  則會在瀏覽器中出現以下界面:

 

因爲咱們數據庫是沒有配置登陸賬號的,因此不能進行登陸,須要經過 python manage.py createsuperuser 來建立一個超級用戶:

最開始建立失敗的緣由是因爲密碼過短,至少須要八位字符;全是數字;該密碼太常見了,因此這是須要注意的地方。

而後咱們就可使用該賬號登陸系統:

 

打開咱們的 App 模塊中的 mydjango/admin.py 文件,把咱們的 Models 添加進咱們的 admin 管理頁面:

from django.contrib import admin
from mydjango.models import TUser
 
# Register your models here.
admin.site.register(TUser)

 

而後咱們就能夠在後臺進行咱們的模塊管理了。

 

~ 我學 Python

相關文章
相關標籤/搜索