上課老師講的知識點

s11day97前端

1. 爲何要作先後端分離?vue

- 先後端交給不一樣的人來編寫,職責劃分明確。react

- API        (IOS,安卓,PC,微信小程序...)ios

- vue.js等框架編寫前端時,會比以前寫jQuery更簡單快捷。web

 

2. 對於後端人員,主要爲前端提供:API(接口)redis

之前的你的接口:vuex

http://127.0.0.1:8000/index/django

http://127.0.0.1:8000/users/編程

http://127.0.0.1:8000/add_users/json

http://127.0.0.1:8000/del_users/

http://127.0.0.1:8000/edit_users/

restful 規範:

http://127.0.0.1:8000/users/ 

 

3. 談談你對restful規範的理解?

1. 使用https代替http 

https://www.luffycity.com/course/detail/web/3

http://www.luffycity.com/course/detail/web/3

 

2. 在URL中體現本身寫的是API

https://www.luffycity.com/api/

https://api.luffycity.com/ 可能會跨域

 

3. 在URL中體現版本 

https://www.luffycity.com/api/v1/users 

https://www.luffycity.com/api/v2/users

 

4. 名詞(面向資源編程)

https://www.luffycity.com/api/v1/users 

https://www.luffycity.com/api/v1/song

 

5. 行爲 

https://www.luffycity.com/api/v1/users

method:

get,獲取

post,新建

put,更新

patch,局部更新

delete,刪除

6. 條件 

https://www.luffycity.com/api/v1/users?page=1

https://www.luffycity.com/api/v1/users?page=1&gender=2

 

7. 狀態碼

200

301

302

404

500

推薦使用code:

def xx(request):

ret = {'code':1000,'data':None}

try:

...

except Exptions as e:

ret['status'] = 1001 

ret['error'] = 'xxxx錯誤'

 

return JsonResponse(ret)

8. 錯誤信息

{

code:10001,

error:'用戶名或密碼錯誤'

}

 

9. 返回結果:

GET:

https://www.luffycity.com/api/v1/users

響應:

{

code: 1000,

data: [

{'name':'趙森','age':19},

{'name':'趙雲','age':16},

{'name':'趙雲','age':16},

{'name':'趙雲','age':16},

{'name':'趙雲','age':16},

]

}

GET:

https://www.luffycity.com/api/v1/users/1/

響應:

{

code:1000,

data:{'name':'趙森','age':19},

}

POST:

https://www.luffycity.com/api/v1/users

請求體:

{'name':'大表哥','age':19}

響應(不要):

{

code:1000,

data:{'id':9, 'name':'大表哥','age':19}

}

 

PUT/PATCH:

https://www.luffycity.com/api/v1/users

請求體:

{'name':'大表哥','age':19}

響應(不要):

{

code:1000,

data:{'id':9, 'name':'大表哥','age':19}

}

 

DELETE:

...

10. hyper link 

 

訪問:https://www.luffycity.com/api/v1/users

{

code:1000,

data:[

{'id':1,'name':'趙森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'趙森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'趙森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'趙森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'趙森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

]

}

 

https://www.luffycity.com/api/v1/users

{

code:1000,

data:[

{'id':1,'name':'趙森','age':19, 'depart_title':'公關部'},

{'id':1,'name':'趙森','age':19, 'depart_title':'公關部'},

{'id':1,'name':'趙森','age':19, 'depart_title':'公關部'},

{'id':1,'name':'趙森','age':19, 'depart_title':'公關部'},

{'id':1,'name':'趙森','age':19, 'depart_title':'公關部'},

]

}

 

 

4. django rest framework框架的做用?

幫助開發者能夠快速開發出遵循restful規範的API 

 

5. django rest framework框架都有哪些組件(10)?

版本【1】

權限

認證

節流

分頁【2】

解析器【3】 ****

序列化 *****

視圖 ****

路由 

渲染器【4】

項目架構:

- 主站,學生使用;(vue.js + rest framework)

- 導師後臺,導師使用;

- 管理後臺,運營使用;

開發人員:

主站:

- 前端:

- 前端姑娘 v1,vue.js 1.0

- 前端姑娘 v2,vue.js 2.0

- 後端:

- 老村長

- 產品經理

- alex/我/文周

導師: 1人

管理後臺:1人  + 兼職導師

 

 

2. ContentType 

- http請求頭

現象:reqeust.POST中未獲取到數據。

a. 老闆數據無法來

b. 本身

request.POST

requset.boy 

Content-Type請求頭的做用?

用於標記請求體數據的格式,如:

1. Content-Type:application/x-www-form-urlencoded

請求體:b'pwd=123&user=root'

 

2. Content-Type:application/json

請求體:{"pwd": 123, "user": "root"}

 

s11day98 

 

內容回顧:

1. 爲何要作先後端分離?

 

2. 簡述http協議?

- 基於socket

- 數據格式:

"GET /index?name=123&age=19 http1.1\r\nhost:www.luffyciti.com\r\ncontent-type:application/json...\r\n\r\n"

 

"POST /index http1.1\r\nhost:www.luffyciti.com\r\ncontent-type:application/json...\r\n\r\n{name:'alex',age:18}"

 

"POST /index http1.1\r\nhost:www.luffyciti.com\r\ncontent-type:application/enform.....\r\n\r\nname=alex&age=18&xx=19"

- 無狀態短連接

一次請求一次響應以後斷開鏈接

 

3. 簡述restful 規範?

https://www.luffycity.com/api/v1/courses/?sub_category=0

 

4. django rest framework組件的做用?

 

5. 列舉django rest framework組件(10)?

 

6. 路飛的表結構

 

s11day99 

 

內容回顧:

1. 爲何作先後端分離?

 

2. rest framework做用?

 

3. 簡述Http協議?

 

4. 列舉rest framework組件?

 

5. restful 規範?

 

6. content-type請起頭的做用?

用於告知服務端,客戶端發送的請求體數據格式。

Content-Typeapplication/x-www-form-urlencoded:

請求體格式:phone=8615131255555&password=asdfasdfasdf&oneMonth=1

Content-Type: application/json;charset=UTF-8

請求體格式:{"BaseRequest":{"Uin":981579400,"Sid":"h9kV51dfCuwJy9SX","Skey":"@crypt_2ccf8ab9_edc3756c6a6adef29051ab1ae52c6cb6","DeviceID":"e037891563571357"},"Msg":{"Type":1,"Content":"test","FromUserName":"@3fd34d9c325790b34948028adc36a31f","ToUserName":"@6ba3ce1e58cfb403c9adaf8053e82e79","LocalID":"15336944955110060","ClientMsgId":"15336944955110060"},"Scene":0}

 

擴展:user-agent請求頭?

 

7. django content-type組件的做用?

解決一張表和多張表作FK關聯的問題。

 

8. 哪裏使用過面向對象的封裝?

class BaseRequest(object):

def __init__(self):

self.code = ..

self.data = 

self.error = ...

...

def dict()

 

obj = BaseRequest()

obj.__dict__

 

9. 視圖要寫

- try 

- 註釋 

- 建明之一

 

10. ORM

 

a. FK正向和反向操做

class A:

name = ..;.

 

clas B:

a = FK(A,related_name='xxxx')

title = ...

class C:

a = FK(A)

age = ...

 

b. O2O的正向和反向操做

class A:

name = ..;.

class B:

a = O2O(A)

age = ...

 

c. 補充:models.User.objects.filter(xx__isnull=True)

 

class 部門用戶表:

title = ..;.

 

clas 用戶表:

p = FK(A,related_name='xxxx')

name = ...

 

 

modes.用戶表.objects.filter('name','p__title')

modes.部門用戶表.objects.filter('title','用戶表__name',表__isnull=False)

 

注意:

1. left join和inner join的區別?

2. left join是表在前和在後請求不同?

 

 

s11day100 

 

內容回顧:

1. django請求生命週期?

#- wsgi
#- 中間件
#- 路由
#- 視圖 
#- ORM
#- 模板渲染

 

2. django提供的功能 

#- 必備
#- 路由 
#- 視圖
#- 模板渲染

 

- django:

#- ORM:
#...
#...
#- 分頁 
#- Form & ModelForm
#- admin 
#- auth
#- session 
#- 中間件 
#- contenttype
#- csrf
#- 緩存(速度塊)

 

3. restful 

#- restful 規範 
#- django rest framwork 
#- 其餘
#- 跨域

 

 

a. 爲何出現跨域?

b. 如何解決跨域?

#使用cors,即:設置響應頭。
#簡單請求:
#響應頭中設置一個容許域名訪問
#複雜請求:
#OPTIONS請求作預檢,容許特殊請求方式和請求頭 + 容許域名訪問。
#真正請求就能夠發送過來進行處理 + 容許域名訪問。

 

c. 跨域 

#www.baidu.com         / www.luffycity.com 
#www.baidu.com         / api.luffycity.com 
#www.baidu.com:8001    / www.baidu.com:8002  

d. 路飛線上代碼無跨域(項目部署時,放在同一處)

- vue.js 

- 前端三大框架:

#react.js /angular.js / vue.js          vue.js 2版本

- 組件:

#- axios
#- vuex 
#- router

 

- 你以爲vue和jQuery的區別?

 

#- 雙向綁定
#- 單頁面應用

 

內容詳細:

1. redis字典 

#- 安裝redis,在內存中進行存取數據。
#- 啓動redis服務
#redis-server  

- 虛擬機問題:

#1. 網卡鏈接方式橋接
#2. iptables 關閉 
#service iptables stop 
#3. 修改redis配置文件
#vim /etc/redis.conf

 

- 初始redis

a. redis至關因而一個在內存中建立的大字典。
b. redis的value有5大數據類型:
#- 字符串
#import redis
#conn = redis.Redis(host='192.168.11.61',port=6379)
# 設置值
#conn.set('wupeiqi_name','於超')
# 獲取值
#val = conn.get('wupeiqi_name').decode('utf-8')
#print(val)
#- 列表
#- 集合 
#- 有序集合
#- 字典  

2. 購物車邏輯 

 

問題:

a. 爲何要把購物車信息放到redis中?

#- 查詢頻繁
#- 課程是否存在?
#- 價格策略是否合法?
#- 中間狀態 
#- 購買成功以後,須要刪除。
#- 購物車信息刪除 

b. 購物車有沒有數量限制?

#使用 keys 查看個數作判斷

 

c. 購物車的結構 

#redis = {
#shopping_car_用戶ID_課程ID:{
#id:'課程ID',
#name:'課程名稱',
#img:'課程圖片',
#default_price_id:'默認價格ID',
#price_policy_dict:{
#1: {...},
#5: {...},
#}
#}
#}

總結: 

a. 五大數據類型

 

b. 列舉每種數據類型的操做

#字符串:
#set 
#get 
#字典:
#get
#hgetall
#set
#hmset 
#hdel 
#其餘:
#delete 
#expire
#keys 
#flushall()
相關文章
相關標籤/搜索