內容回顧:
1、開發模式
——普通開發方式(前后端放在一起寫),html和后端都是自己寫;前端:HTML、CSS、JS 請求進來之后,后臺接收請求,通過render回傳資料 ,HTML拿到特殊的標簽渲染后回傳,前后端通過url互動.用集成在一起的方式進行開發,
——前后端分離(前后端的互動全部用Ajax進行互動,不再通過form表單發送請求)
提交需求、提交資料讓用戶登錄 Ajax請求
用戶 ———————————> 前端(vue)——————————>后端Django restframe框架
<——————————— <——————————
回傳頁面 回傳JSON資料
前后端分離的好處:分工明細,代碼邏輯更簡單,前端可以弄PC(VUE)和APP等后端的資料源代碼只需要準備一套,開發效率高,
2、后端開發的作業,即介面開發:
給前端提供URL(高級叫法:ApI/介面的開發),前端根據給的url
進行訪問取資料,后端給它回傳HttpResponse,即回傳內容:所有的用戶串列,
代碼如下:
在url.py中:
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ # path('admin/', admin.site.urls), path (r'^users/', views.users), ]
在views.py中
import json from django.shortcuts import HttpResponse # Create your views here. def users(request): user_list = ['alex', 'oldboy'] return HttpResponse(json.dumps((user_list))) # 將字典轉換為字串,將一個Python資料型別轉換為json資料型別
注1:寫Django程式永遠回傳HttpResponse,而不再用render
注2:創建新的pycharm專案
3、Django、FBV、CBV
FBV:function base view(基于函式的視圖)
例子如下:函式作為視圖函式
def users(request): user_list = ['alex','oldboy'] return HttpResponse(json.dumps((user_list)))
CBV:class base view(基于類的視圖)

代碼如下:
在urls.py中:路由:
path (r'^students/', views.StudentsView.as_view()),
在users.py中:視圖:
from django.views import View # 繼承django中繼承view class StudentsView(View): def get(self, request, *args, **kwargs): return HttpResponse('GET') #相當于if request.method == "GET": # return render(request, 'login.html') def post(self, request, *args, **kwargs): return HttpResponse('POST') def put(self, request, *args, **kwargs): return HttpResponse('PUT') def delete(self, request, *args, **kwargs): return HttpResponse('DELETE') # 在類中寫方法,以不同的方法在執行不同的函式
注:通過Postman進行模擬前端請求的除錯,

403forbidden 跨域問題

4、串列生成時:
class Foo: pass class Bar: pass # 獲取物件串列 v = [] for i in [Foo, Bar]: obj = i() v.append(obj) #相當于下面的一行代碼 v = [item() for item in [Foo, Bar]] #類創造物件——實體化 # 所以v是物件串列
5、面向物件(包括繼承、封裝和多型)
—封裝
—類可以對同一類方法的封裝
包括:
1、class File: #即將同一類的方法封裝到一個類里面
檔案增刪改查方法
2、class DB:
對資料庫的增刪改查方法
class File: def get: def delete: def updata: def add:
—將資料封裝到物件中
class File: def __init__(self, a1, a2): # 物件obj里封裝了一個a1等于123,xxx等于666 self.a1 = a1 self.xxx = a2 def get(self): return ("feimin") def delete(self): pass def update(self): pass def add(self): pass obj1 = File(123, 666) # 實體化的物件 obj2 = File(456, 999) print(obj1.a1) print(obj1.get())
PS:擴展:
整個流程如下:self表示自己


最后print(req.user)的結果為True.
若修改
則結果為alex.

總結:封裝示例的代碼如下:
class Request(object): def __init__(self, obj): self.obj = obj @property def user(self): return self.obj.authticate() class Auth(object): def __init__(self, name, age): self.name = name self.age = age def authticate(self): return True class APIView(object): def dispatch(self): self.f2() def f2(self): a = Auth('alex', 18) # 實體化Auth物件. req = Request(a) # 實體化Request物件 #print(req.obj) print(req.user) obj = APIView() obj.dispatch()
今日概要:
1、restful規范 (建議)
2、django rest framework框架 (django里面有session、cookie、orm、form等等組件,這相當于又開發了第三方的組件讓django應用上來 )
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477665.html
標籤:Python
