Python3 下載
Python3 最新源碼,二進制文檔,新聞資訊等可以在 Python 的官網(wǎng)查看到:
Python 官網(wǎng):https://www.python.org/
你可以在以下鏈接中下載 Python 的文檔,你可以下載 HTML、PDF 和 PostScript 等格式的文檔。
Python文檔下載地址:https://www.python.org/doc/
Window 平臺安裝 Python3.6.8
以下為在 Window 平臺上安裝 Python 的簡單步驟。
打開 WEB 瀏覽器訪問 https://www.python.org/downloads/windows/,一般就下載 executable installer,x86 表示是 32 位機子的,x86-64 表示 64 位機子的。

記得勾選 Add Python 3.6 to PATH。
按 Win+R 鍵,輸入 cmd 調(diào)出命令提示符,輸入 python:

vscode安裝
1、打開項目代碼,選擇項目需要的python虛擬環(huán)境

2、安裝項目依賴包
pip install -r requirements.txt
django項目創(chuàng)建
1、vscode中創(chuàng)建test文件夾,新建python虛擬環(huán)境

2、pip istall Django==2.2.6 安裝Django


3、輸入django-admin startproject 創(chuàng)建項目名稱 的格式就可以創(chuàng)建出django項目。eg: django-admin startproject mysite

4、創(chuàng)建app功能模塊
終端進入mysite目錄進行添加app(功能模塊),輸入格式:python manage.py startapp app名稱。eg:python manage.py startapp app01。

5、啟動運行django項目程序
在settings.py中注冊app,在配置文件中添加來自apps.py的類。


在urls.py中注釋掉原來的path并編寫新的url和視圖函數(shù)的對應關系。

在view.py中定義index函數(shù),返回歡迎使用

后臺模式運行python .\manage.py runserver

訪問后頁面返回

6、模板和靜態(tài)文件的存放地址
模板其實就相當于是前端的html文件。
新建一個templates文件夾,里面存的東西都是模板。靜態(tài)文件其實就包括css、js、image、plugins等。

以圖片為例
url中定義rul和視圖對應關系

在視圖函數(shù)中使用render返回模板

模版中加載靜態(tài)資源圖片

{% load static %}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="ie=edqe">
<title>Document</title>
</head>
<body>
<h1>用戶列表</h1>
<img src="{% static "image/avatar2.png" %}" >
</body>
</html>
實際展示

7、django中的模板語法
django與Java那邊的SpringBoot是完全不一樣的,SpringBoot在開發(fā)中講究的是前后端分離,但是django這邊不是為前后端分離設計的,所以前后端代碼的耦合度更高,比較適合于個人的獨立開發(fā),所以django進而就存在了模板語法這種東西。
而模板語法,本質(zhì)上就是在html中寫一些占位符,由后端傳來的數(shù)據(jù)對這些占位符進行替換和處理操作。
以下演示一下模板語法的使用(以及附帶一個django項目的執(zhí)行流程),更多的模板語法還是需要查閱一下資料的,但是最常用的無非就是for來循環(huán)以及if來判斷
步驟一:在urls.py中添加path路徑。

步驟二:在views.py中添加視圖函數(shù),構造并傳遞數(shù)據(jù)給模板。

def news(request):
import requests
url = 'https://www.chinaunicom.com.cn/43/menu01/1/column05'
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4208.400'
}
res = requests.get(url=url, headers=header)
data_list = res.json()
print(data_list)
return render(request, 'news.html', {'news_list': data_list})
在模板接收數(shù)據(jù)并組織顯示到頁面。

django項目整體的執(zhí)行流程:

用戶操作流程

解析:
用戶通過瀏覽器向我們的服務器發(fā)起一個請求(request),這個請求會去訪問視圖函數(shù):
a.如果不涉及到數(shù)據(jù)調(diào)用,那么這個時候視圖函數(shù)直接返回一個模板也就是一個網(wǎng)頁給用戶。
b.如果涉及到數(shù)據(jù)調(diào)用,那么視圖函數(shù)調(diào)用模型,模型去數(shù)據(jù)庫查找數(shù)據(jù),然后逐級返回。
視圖函數(shù)把返回的數(shù)據(jù)填充到模板中空格,最后返回網(wǎng)頁給用戶。
8、django中常見的請求和響應
三種常見的請求:
第一種:獲取請求的方式:GET/POST(request.method)。
第二種:在url上傳遞值(request.GET)。
第三種:在請求體中提交數(shù)據(jù)(request.POST)。



三種常見的響應:
第一種:直接將響應字符串內(nèi)容返回給請求者。
第二種:讀取模板/html內(nèi)容+渲染再返回給請求者。
第三種:返回重定向結(jié)果給請求者。

9、連接MySQL數(shù)據(jù)庫
在接觸Django框架之前,我們對Python進行數(shù)據(jù)庫連接以及增刪改查的操作都是基于pymysql庫進行的,但是這有一個缺點:每次執(zhí)行之前都需要對數(shù)據(jù)庫進行連接以及編寫大量增刪改查的語句,總體來說是比較繁瑣的。到了Django框架這邊,由于其內(nèi)部提供了ORM框架,所以使用起來就會變得方便許多。這就有點類似于Java那邊的JDBC和MyBatis的區(qū)別了。
安裝第三方模塊
由于Django新版底層依賴的pymysql比較差,所以現(xiàn)在我們就比較少使用pymysql,本文會以mysqlclient來進行演示。:
pip install mysqlclient #出錯

下載安裝包 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

安裝下載的安裝包

ORM框架:
ORM框架主要的作用是:
創(chuàng)建、修改、刪除數(shù)據(jù)庫中的表。(注意:只能針對表操作,無法進行創(chuàng)建數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫只能通過自己的MySQL終端進行創(chuàng)建)
操作表中的數(shù)據(jù)(也就是對表進行增刪改查操作)。
步驟一:創(chuàng)建數(shù)據(jù)庫(eg:create database django_mytest default charset utf8 collate utf8_general_ci;)
步驟二:使用django連接MySQL數(shù)據(jù)庫
django默認使用的數(shù)據(jù)庫是sqlite,而我們現(xiàn)在使用的是MySQL數(shù)據(jù)庫,所以我們就需要在settings.py文件里面修改一下配置。
選中要注釋的代碼塊:Ctrl+/;取消注釋:Ctrl+/
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_mytest', # 剛才創(chuàng)建數(shù)據(jù)庫的名字
'USER': '用戶名',
'PASSWORD': '密碼', # 自己數(shù)據(jù)庫的密碼
'HOST': '數(shù)據(jù)庫地址', # 安裝MySQL的機器(默認這里都是主機安裝)
'PORT': '3366', # 設置端口號(默認3306)
}
}
使用ORM框架操作數(shù)據(jù)庫
創(chuàng)建&刪除表:
步驟一:在models.py文件中創(chuàng)建類:
# Create your models here.
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
步驟二:在vsc終端輸入命令:
python manage.py makemigrations
python manage.py migrate


注意:在以后新增表或者刪除表的時候只需要在這里選擇填寫或者注釋掉之后,再重新運行上面兩個命令即可做到新增或者刪除表。
修改表結(jié)構:
在表中新增列的時候,由于已經(jīng)存在的列中可能有數(shù)據(jù)了,所以在新增列的時候就必須要指定新增列對應的數(shù)據(jù)(具體有四種做法):
1、在終端會進行提示,可以在終端手動輸入一個值。
2、設置默認值。eg:age = models.IntegerField(default=10)。
3、允許為空。eg:age = models.IntegerField(null=True, blank=True)。
4、如果你可以確定表中一定是沒有數(shù)據(jù)的,或者是已經(jīng)想刪除表中的數(shù)據(jù)的,可以先注釋掉運行,再注釋回來添加列再輸入上面兩行命令運行,但是還是不推薦這樣子做。
對表中數(shù)據(jù)進行增刪改查操作:
1、增


2、刪


3、改


問題
1、數(shù)據(jù)庫建表時, 沒有成功創(chuàng)建表 No migrations to apply報錯原因和解決方法
錯誤原因是因為在之間就已經(jīng)執(zhí)行過python manage.py migrate,在數(shù)據(jù)庫表django_migrations中有之前的信息導致無法正常建表。
解決方法:
打開數(shù)據(jù)庫找到django_migrations
刪除其中name為0001_initial的那條記錄,然后在重新執(zhí)行python manage.py migrate就可以正常建表