通過登入流程大致了解django框架

2022-09-13 10:18:12 字數 3996 閱讀 6174

目錄使用者想要通過瀏覽器輸入**訪問到相應的資源的前提是後端要提前開設該資源的訪問,如果後端不開設相應的資源,使用者就無法訪問

開設資源首先要通過專案資料夾下面的url檔案(路由與檢視的對應關係)下分發任務到檢視函式進行邏輯處理

urlpatterns = [

url(r'^admin/', admin.site.urls),

# 登入功能

url(r'^login/', views.login),

]

當使用者傳送請求進行登入時,我們就要給使用者返回乙個登入介面,所以,我們就要提前寫好乙個登入的前端介面,當使用者傳送請求時,我們把這個介面返回給使用者

在django中,我們會把前端的html檔案全部存放到templates資料夾中

而在寫前端頁面時,我們總會需要用到一些靜態檔案,我們需要手動建立乙個static資料夾來存放這些資料夾,為了方便管理,在static檔案加下也可以建立其他的資料夾

但是我們把這些檔案全都放好後,我們會發現通過瀏覽器並不能訪問到這些靜態檔案,出現這種情況的原因就是:django後端如果想暴露後端資源,必須去urls裡面開設相應的資源介面,但是有過多資源時,一一設定介面很不現實,所以django給我提供了配置,我們只需要到setting資料夾下進行配置就好了,配置方法如下:

static_url = '/static/'

# 這個static是訪問靜態資源的介面字首,

# 你想訪問我的靜態資源就必須使用static開頭,

# 之後我會拿著static後面的路徑去下面的資料夾中找

# 手動開設靜態資源訪問資源,這個裡面個可以寫多個資料夾,第乙個沒找到,就去下面乙個資料夾找

staticfiles_dirs = [

os.path.join(base_dir,'static') # 將static資料夾下的所有資源暴露給使用者

]

這樣問題又來了,當我麼有個需求,要求你改動staltic_url中的介面字首,這樣我們就需要把所有用到這個介面字首的地方都進行改動

對於這個問題,我們可以使用靜態檔案的動態繫結的方法

我們把靜態檔案配置好後,我們就可以通過render方法返回乙個有css、js樣式的前端登入頁面,登入頁面我們需要接收到使用者傳送來的資料進行校驗,那麼我們該怎麼去拿到這個資料?

首先,我們需要先了解的一點是,form表單預設的是使用get請求,所以我們在前端頁面輸入完資訊進行提交後可以看到此時的url變為這樣的形式,我們可以清除的看到我們剛剛輸入的資訊,這樣一定是不安全的,而且get請求的大小也是有限制的,所以我們通常只會用get請求攜帶一些不重要的資料

為了解決這個問題,我們就要到前端頁面的form標籤中修改預設的請求方式,這個action不寫是預設向當前位址傳送請求。

在修改完成後,提交form表單資料,後可能會出現403的情況,403的意思是服務端拒絕請求,出現這個問題我們可以在settings檔案中暫時把middleware這個列表中的'django.middleware.csrf.csrfviewmiddleware',注釋掉,然後我們就可以正常的提交form表單了

在django中,無論是get請求還是post請求都會執行檢視函式,在登入功能中,使用者通過get請求拿到登入頁面,然後通過post請求提交資料,然後後端做校驗,

所以我們首先就要先判斷使用者是get請求還是post請求,我們可以通過傳給檢視函式的引數request進行判斷

request是乙個物件,這個物件有很多方法,現在暫時了解它的部分方法

request.method:獲取請求方式,並且返回的結果是大寫的字串

request.post:獲取使用者提交的post請求資料,我們可以暫時把返回的資料當成乙個字典套列表

request.get:獲取使用者提交的get請求資料,返回的結果也可以看成乙個字典套列表

request.post獲取的結果是乙個字典,我們可以通過get方法來獲取具體的值,但是與字典不同的是,get方法預設只會獲取列表的最後乙個元素,想要獲取整個列表,可以使用request.post.getlist()的方法,request.get方法也一樣

在寫django專案的時候 乙個django就對應乙個資料庫,不要出現多個專案使用同乙個資料的情況

這裡以mysql資料庫為例,使用django連線mysql資料庫必須有兩部操作

首先要通過配置檔案進行配置,在settings檔案裡找到databases字典,修該這個字典

修改的方法與pymysql配置相似

databases = 

}

配置完setting之後還不行,還要告訴django不要使用預設的mysqldb連線,而是使用pymsql連線

可以在專案名下的__init__.py中寫,也可以在應用名下的__init__.py中寫

import pymysql

pymysql.install_as_mysqldb()

django操作orm:

在應用名下的models.py中書寫模型類

書寫完模型類之後要執行資料庫遷移語句

資料庫遷移命令有兩條,這兩條命令一定是同時出現的,而且每次對模型類進行改動後,就一定要執行資料庫遷移命令

python manage.py makemigrations  # 記錄資料庫的修改

python manage.py migrate # 將修改同步到資料庫中

模型表字段的增刪改查

欄位的修改

直接修改** 然後執行資料庫遷移命令即可(兩條一條不能少)

# 方式1 設定預設值

email = models.emailfield(default='[email protected]') # varchar

# 方式2 允許欄位為空

phone = models.bigintegerfield(null=true)

# 直接在提示中給預設值

gender = models.charfield(max_length=32)

欄位的刪除

直接注釋掉對應的字段 然後再執行資料庫遷移命令即可(謹慎使用)

模型表資料的增刪改查(******)

查 data = models.user.objects.filter(username=username) # ]>

"""filter返回的結果是乙個"列表",裡面才是真正資料物件

filer括號內可以放多個關鍵字引數 這多個關鍵字引數在查詢的時候 是and關係

"""user_list = models.user.objects.all() # models.user.objects.filter()

"""結果是乙個"列表" 裡面是乙個個的資料物件

"""增 user_obj = models.user.objects.create(username=username,password=password)

print(user_obj,user_obj.username,user_obj.password)

# create方法會有乙個返回值 返回值就是當前被建立的物件本身

改models.user.objects.filter(id=edit_id).update(username=username,password=password)

"""批量操作 會將filter查詢出來的列表中所有的物件全部更新

"""刪(一般情況下不會使用)

models.user.objects.filter(id=delete_id).delete()

"""批量操作 會將filter查詢出來的列表中所有的物件全部刪除

"""

單點登入 使用者中心大致流程

客戶端需要登入後才能執行的操作,在 interceptor中設定。第一次訪問客戶端 攔截所有登入後才能做的操作,目錄規劃時要規劃好,back 沒有 token 跳轉到使用者中心伺服器 response.sendredirect url url 中帶著returnurl 用來在使用者中心登入成功後跳轉...

軟體測試大致流程

由乙個執行測試用例人員涉及到需求評審 測試用例編寫 測試執行負責人 系統測試 穩定性測試和效能測試 測試環境搭建等工作,這些工作讓自己更清晰的認識測試各個流程 需求評審 需求分析 需求提取 測試點分析 用思維導圖工具輔助 測試用例設計 測試用例評審 測試用例更新完善 測試執行 測試記錄 測試報告 測...

WegGL使用大致流程

在body中定義canvas please use the browser supporting canvas 引入一些專門為webgl準備的 定義好的函式庫 js檔案,用於在中繪製圖形 獲取元素 var canvas document.getelementbyid webgl 獲取webgl繪圖上...