(三)Django2 模型與站點

2021-08-28 18:37:22 字數 4264 閱讀 5702

開啟mysite/settings.py。這是個包含了 django 專案設定的 python 模組。

通常,這個配置檔案使用 sqlite 作為預設資料庫。本篇文章將利用mysql作為示例。

修改mysite/settings.py配置檔案資料庫設定模組

databases = 

}

在這裡順便更改一下市區設定與語言

language_code = 'zh-hans'

time_zone = 'asia/shanghai'

修改mysite/_init_.py,新增如下**

import pymysql

pymysql.install_as_mysqldb()

這些應用被預設啟用是為了給常規專案提供方便。

預設開啟的某些應用需要至少乙個資料表,所以,在使用他們之前需要在資料庫中建立一些表。請執行以下命令:

python manage.py migrate
截下來建立我們自己應用的模型,模型是真實資料的簡單明確的描述。它包含了儲存的資料所必要的字段和行為。模型是真實資料的簡單明確的描述。它包含了儲存的資料所必要的字段和行為。

from django.db import models

#分類class sorts(models.model):

sort_name = models.charfield(max_length = 50,null = false)#分類名稱

sort_description= models.charfield(max_length = 100)#分類描述

sort_date = models.datefield(auto_now_add=true)#發表日期

def __str__(self):

return self.sort_name

#博文class articles(models.model):

art_title = models.charfield(max_length = 50,null = false)#標題

art_content = models.textfield(null = false)#內容

art_views = models.integerfield(default=0)#瀏覽量

art_date = models.datefield(auto_now_add=true)#發表日期

art_like_count = models.integerfield(default=0)#點讚數

art_sort = models.foreignkey(sorts,on_delete=models.cascade)#分類

def __str__(self):

return self.art_title

**非常直白。每個模型被表示為 django.db.models.model 類的子類。每個模型有一些類變數,它們都表示模型裡的乙個資料庫字段。

每個欄位都是 field 類的例項 - 比如,字元欄位被表示為 charfield ,日期時間欄位被表示為 datetimefield 。這將告訴 django 每個欄位要處理的資料型別。

每個 field 類例項變數的名字也是欄位名,所以最好使用對機器友好的格式。你將會在 python **裡使用它們,而資料庫會將它們作為列名。

你可以使用可選的選項來為 field 定義乙個人類可讀的名字。這個功能在很多 django 內部組成部分中都被使用了,而且作為文件的一部分。如果某個字段沒有提供此名稱,django 將會使用對機器友好的名稱,也就是變數名。在上面的例子中,我們只為 question.pub_date 定義了對人類友好的名字。對於模型內的其它字段,它們的機器友好名也會被作為人類友好名使用。

定義某些 field 類例項需要引數。例如 charfield 需要乙個 max_length 引數。這個引數的用處不止於用來定義資料庫結構,也用於驗證資料,我們稍後將會看到這方面的內容。

注意在最後,我們使用 foreignkey 定義了乙個關係。這將告訴 django,每個 articles物件都關聯到乙個 sorts物件。django 支援所有常用的資料庫關係:多對

一、多對多和一對一。

上面的一小段用於建立模型的**給了 django 很多資訊,通過這些資訊,django 可以:

為這個應用建立資料庫 schema(生成 create table 語句)。

建立可以與 articles 和 sorts 物件進行互動的 python 資料庫 api。

但是首先得把 blog 應用安裝到我們的專案裡。

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'blog',]

現在django專案包含這個blog應用了

python manage.py makemigrations blog
然後再執行

python manage.py migrate
將會根據上面建立的兩個class建立對應的資料庫表

現在讓我們進入互動式 python 命令列,嘗試一下 django 為你建立的各種 api。通過以下命令開啟 python 命令列:

python manage.py shell
我們使用這個命令而不是簡單的使用 "python" 是因為 manage.py 會設定 django_settings_module 環境變數,這個變數會讓 django 根據 mysite/settings.py 檔案來設定 python 包的匯入路徑。

當你成功進入命令列後,來試試 database api 吧:

from blog.models import sorts, articles  # import the model classes we just wrote.

articles.objects.all()

上述首先匯入包,然後查詢所有article表資料,更多api不再一一舉例

為你的員工或客戶生成乙個使用者新增,修改和刪除內容的後台是一項缺乏創造性和乏味的工作。因此,django 全自動地根據模型建立後台介面。

django 產生於乙個公眾頁面和內容發布者頁面完全分離的新聞類站點的開發過程中。站點管理人員使用管理系統來新增新聞、事件和體育時訊等,這些新增的內容被顯示在公眾頁面上。django 通過為站點管理人員建立統一的內容編輯介面解決了這個問題。管理介面不是為了**的訪問者,而是為管理者準備的。

首先,我們得建立乙個能登入管理頁面的使用者。請執行下面的命令:

python manage.py createsuperuser
然後按照提示填寫使用者名稱,密碼、郵箱等。

django 的管理介面預設就是啟用的。讓我們啟動開發伺服器,看看它到底是什麼樣的。

如果開發伺服器未啟動,用以下命令啟動它:

python manage.py runserver
現在,開啟瀏覽器,轉到你本地網域名稱的 "/admin/" 目錄, -- 比如 "" 。你應該會看見管理員登入介面

然後輸入剛才建立賬號密碼登陸。

向管理頁面中新增部落格應用

但是我們的部落格應用在哪呢?它沒在索引頁面裡顯示。

from django.contrib import admin

from .models import *

# register your models here.

admin.site.register(articles)

admin.site.register(sorts)

現在我們向管理頁面註冊了問題 articles類與sorts類。django 知道它應該被顯示在索引頁裡,接下來便可通過管理頁面進行資料管理。

django2 登入與出版社

1.django核心功能 因為django功能很多 出版社可以使用到部分功能,最快最簡單了解django的執行模式,每個點後續細化去梳理 django的路由 django的檢視 django的模板 django的orm django的cookie與session django的中介軟體 django...

Django 2 框架的建立流程

1.django安裝 pip3 install django2.建立乙個project 4.啟動專案 python manage.py runserver 127.0.0.1 80905.開啟瀏覽器 這時候只是測試的工程檔案 還要更改一下setting檔案中的配置 django.contrib.ad...

學習Python的日子Django(2)

django 簡介檢視 主要內容 urlconf httprequest物件 httpresponse 1 檢視接受web請求並且返回web響應 2 檢視就是乙個python函式,被定義在views.py中 3 響應可以是一張網頁的html內容,乙個重定向,乙個404錯誤等等 4 在http請求中產...