1. 程式人生 > 其它 >Django搭建開發‘學習筆記’專案二(建立應用程式)

Django搭建開發‘學習筆記’專案二(建立應用程式)

Django專案由一系列應用程式組成,它們協同工作讓專案成為一個整體。

進入目錄learn_log,並激活虛擬環境,再執行命令python3 manage.py startapp learning_logs,建立應用程式

命令startapp appname讓Django搭建並建立應用程式所需的基礎設施。執行後ls檢視目錄可看到其中新增了learning_logs資料夾。資料夾中最重要的檔案為models.py、admin.py和views.py。其中models.py用來定義要在應用程式中管理的資料,後續介紹admin.py和views.py。

一、定義模型

  開啟檔案models.py

  

  這裡匯入了模組models,並讓我們建立自己的模型。模型告訴Django如何處理應用程式中儲存的資料。在程式碼層面,模型就是一個類。

  如下表示使用者將儲存的主題的模型:

from django.db import models


class Topic(models.Model):
    """使用者學習的主題"""
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        
"""返回模型的字元型別""" return self.text # Create your models here.

  text屬性是一個CharField---由字元組成的資料,即文字。需要儲存少了文字,如名稱、城市、標題時,可使用CharField。定義CharField屬性時一定要告訴Django該在資料庫中預留多少空間。

  date_added是一個DateTimeField---記錄日期和時間的資料。使用實參auto_now_add=True,每當使用者建立新主題時,Django都會將這個屬性自動設定為當前日期和時間。

二、啟用模型

  要使用這些模型,必須讓Django將前述應用程式包含到專案中。為此,開啟settings.py(位於目錄learning_log/learning_log中),其中以下部分告訴Django哪些應用程式被安裝到了專案並將協同工作:

  將前面建立的應用程式learning_logs新增到這個列表

  通過將應用程式分組,在專案不斷增大,包含更多應用程式是,有助於對應用程式進行跟蹤。

  接下來需要修改資料庫,使其能夠儲存與模型Topic相關的資訊,為此,在終端視窗中執行命令:python3 manage.py makemigrations learning_logs

  makemigrations讓Django確定如何修改資料庫,使其能夠儲存與前面定義的新模型相關聯的資料。輸出表明Django建立了一個名為0001_initial.py的遷移檔案,這個檔案將在資料庫中未模型Topic建立一個表。

  現在應用這種遷移,讓Django修改資料庫,執行命令:python3 manage.py migrate

  (每當需要修改管理的資料時,都需要採取這三個步驟,先修改models.py,然後對learning_logs呼叫makemigrations,然後讓Django遷移專案)

  即修改後需要python3 manage.py makemigrations APP_NAME然後python3 manage.py migrate

三、Django管理網站

  1、為網站建立超級使用者

    執行命令python3 manage.py createsuperuser,輸入使用者名稱密碼

  2、向管理網站註冊模型

    Django自動在管理網站中添加了一些模型,如User和Group,對於我們建立的模型,需要手工進行註冊。

    我們建立應用程式learning_logs時,Django在models.py所在目錄中建立了一個名為admin.py檔案,進行如下修改:

  models前面的句點是為了讓Django在admin.py所在目錄查詢models.py。admin.site.register(Topic)讓Django通過管理網站管理模型.

  訪問localhost:8000/admin並輸入剛剛建立的超級使用者名稱和密碼,就可以看到管理介面

  可以新增一個Chess主題

四、定義模型Entry

  要記錄學到的Chess知識,使用者必須能夠在學習筆記中新增條目。為此需要定義相關的模型,新增模型entry來顯示主題下的條目:models.py下新增

class Entry(models.Model):
    """學到的有關某個主題的具體知識"""
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = 'entries'

    def __str__(self):
        """返回模型的字串表示"""
        return f"{self.text[:50]}..."

五、遷移模型Entry

  新增新模型後需要再次遷移資料庫

  依次執行命令:python3 manage.py makemigrations learning_logs、python3 manage.py migrate

六、向管理網站註冊Entry

  admin.py修改:

from django.contrib import admin

from .models import Topic, Entry

admin.site.register(Topic)
admin.site.register(Entry)

# Register your models here.

  返回http://127.0.0.1:8000/admin/,將可新增知識,新增知識時選擇對應主題