開發一個Django博客網站項目
需要准備的環境 python3以上
創建一個虛擬環境(以兼容不同的Django版本)
- 創建一個文件夾來專門存放Django(website)
- 安裝Django
pip3 install django
- 打開cmd到website中創建虛擬環境(djangoenv為虛擬環境項目名)
cd desktop/website
python -m venv djangoenv
- 繼續輸入
djangoenv\Scripts\activate
就可以將該虛擬環境激活了
這是每一次使用虛擬環境都要進行的操作
以上虛擬環境就創建好了
創建一個Django項目
`django-admin startproject one(項目名)
初始化生成文件的用途
Manage.py 一個在命令行中可以調用的網站管理工具
one文件夾里
init.py 告訴Python這個文件夾是一個模塊
settings.py one項目中一些配置
urls.py 網站內各個網址聲明
usgi.py web服務器與django項目的接口
新建一個一個Django App
`cd one`
python manage.py startapp blog(app項目名)
再將App添加到settings.py里INSTALLED_APPS默認包括了一下Django自帶的應用:
- django.contrib.admin--管理員站點
- django.contrib.auth--認證授權系統
- django.contrib.contenttypes--內容類型框架
- django.contrib.sessions--會話框架
- django.contrib.messages--消息框架
- django.contrib.staticfiles--管理靜態文件的框架
默認開啟的某些應用至少需要一個數據表,所以在使用他們之前要創建一些表
python manage.py migrate
這個命令是用來檢查INSTALLED_APPS設置,為其中的每個應用創建需要的數據表(作用到數據庫文件)
Django的大致運行流程
對於不同路徑的響應(一般是在urls.py--blog中修改)
在blog文件夾下創建一個新的文件:urls.py用於處理網址的解析,同時在one文件夾下的urls.py中添加一條路徑
urls.py--one path('',include('blog.urls')),
- urls.py--one中要添加
from django.urls import path,include
- urls.py--blog中添加
from django.urls import path
函數include()允許引用其他的URLconfs.,他會截斷與此項相匹配的URL部分,並將剩余的字符串發送到URLconf以供進一步處理.包括其他URL模式時總應該使用include(),admin.site.urls是唯一的例外.
函數path()具有四個參數,兩個必須參數:route和view,兩個可選參數: kwargs和name一般只填寫兩個必選參數:
route是一個匹配URL的准則.當Django響應一個請求時,他會從urlpatterns的第一項開始,按順序以此匹配列表中的項,直到找到匹配的項,這些准則不會匹配GET和POST參數或域名.
例如,URLconf 在處理請求
https://www.example.com/myapp/
時,它會嘗試匹配 myapp/ 。處理請求https://www.example.com/myapp/?page=3
時,也只會嘗試匹配 myapp/
path() 參數: view
當 Django 找到了一個匹配的准則,就會調用這個特定的視圖函數,並傳入一個 HttpRequest 對象作為第一個參數,被“捕獲”的參數以關鍵字參數的形式傳入。
route參數可以有一些特定的格式來處理路徑
<slug:blog_link>--slug可以識別字符和數字
<int:blog_id>--int用於識別數字,表示這個網址是個數字存到blog_id這個變量里
<str:blog_title>--str用於識別字符串
如上圖所示有一個默認的路徑http://127.0.0.1:8000/admin/
編寫模型
模型是您的數據唯一而且准確的信息來源.它包含您正在存儲的數據的重要字段和行為.一般來說,每一個模型都映射一個數據庫表
- 每個模型都是一個python類,這些類繼承django.db.models.Model
- 模型類的每個屬性都相當於一個數據庫字段
- 綜上,Django正在給你一個自動生成訪問數據庫的API
三個關聯模型是為了防止出現重復過多的問題(方便添加數據)
在models.py文件中建立一個Post模型,還有與之相關聯的Category,Tag模型
- ForeignKey()--一般用於一對多的模型
- ManyToManyField()--一般用於多對多的模型
- 關聯作者模型有現成的直接引入
from django.contrib.auth.models import User
然后,想要在后台直接操作這三個數據,需要現在admin.py中注冊一下
-
from .models import Post,Category,Tag
--將Post,Category,Tag從models.py中導入 -
admin.site.register
--進行注冊
最后每當我們在models做了修改之后都需要執行兩個操作
python manage.py makemigrations
python manage.py migrate
第一個命令用於檢測你對模型文件的修改,並且把修改的部分作為一次遷移(這是一種對於變化的存儲形式)
第二個命令,在數據庫中創建新定義的模型的數據表