1.基本TCP/IP 協議做用於應用層的協議 2.基於請求響應 3.無狀態 4.無鏈接
請求首行 請求頭(一堆k,v鍵對)) (空格) 請求體(post請求攜帶的數據)
響應首行 響應頭(一堆k,v鍵對) (空格) 響應體(post請求攜帶的數據)
1xx:服務器已經成功接收到你的數據正在處理,你能夠繼續提交數據 2xx:請求成功 服務器已經成功接收到你的數據發送給你了 3xx:重定向 4xx:請求資源錯誤/不存在 5xx:服務器錯誤
靜態網頁: 頁面上的數據都是寫死的,萬年不變 動態網頁: 頁面上的數據是從後端動態獲取的 好比後端獲取當前時間 後端獲取數據庫數據而後傳遞給前端頁面
後端生成的數據直接傳遞給前端頁面使用(而且前端頁面能夠靈活的操做改數據) >>> 模板語法 模板渲染 模板語法須要依賴於第三方模塊 pip install jinja2 模板語法 jinja2支持前端直接使用相似於python的語法操做數據 <p>{{ user_dic }}</p> <p>{{ user_dic.name }}</p> <p>{{ user_dic['password'] }}</p> <p>{{ user_dic.get('name') }}</p> {% for user in user_dict %} <!--[{},{},{},{}]--> <tr> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.password }}</td> </tr> {% endfor %}
python三大主流web框架 Django:大而全,自帶了不少功能模塊,相似於航空母艦 (缺點:有點笨重) Flask:短小精悍,自帶的功能模塊特別少,大部分都是依賴於第三方模塊(小而輕) Tornado:異步非阻塞 主要用在處理高io 多路複用的狀況 能夠寫遊戲後端 a:socket b:路由與視圖函數 c:模板渲染 Django: a用的別人的 wsgiref b本身寫的 c本身寫的 Flask: a用的別人的 werkzeug b本身寫的 c用的別人的 jinja2 Tornado: a,b,c都是本身寫的
安裝 :pip3 install django==1.11.11 1、 使用 :django-admin startproject 項目名稱 建立app :cd 項目名稱 python3 manage.py startapp app01(子項目) 文件目錄介紹: -項目名 ----settings:全局配置信息 ----urls:總路由,請求地址跟視圖函數的映射關係 -應用名 ----mingrations:數據庫遷移記錄 ----admin.py:Django後臺管理相關 ----models.py 數據庫表模型 ----views 視圖函數() --static 存放(靜態文件、css、js、img) --templates : html存放 --manage.py ---項目入口,執行一些命令 2、新建目錄 -static 存放靜態文件(css、文件) 在settings中 TEMPLATES中查看路徑存不存在 STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')] -templates html存放,在settings中 TEMPLATES中查看路徑存不存在 3、配置settings.py (1)每新建一個app必須在配置文件中註冊:在 INSTALLED_APPS 下添加 'app01.apps.App01Config' (2)TEMPLATES 中'DIRS':[ os.path.join(BASE_DIR, 'templates') ] (3)在配置文件最後加 :STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static'), ] (4)要把 MIDDLEWARE 中(註釋掉)...CsrfViewMiddleware 4、數據庫建表遷移指令 python3 manage.py makemigrations python3 manage.py migrate 5、執行項目: python3 manage.py runserver 127.0.0.1:8001
from django.shortcuts import render,HttpResponse,redirect
def reg(request): user_dict = {'name':'jason','password':'123'} return render(request,'reg.html',{'user_dict':user_dict}) def reg(request): user_dict = {'name':'jason','password':'123'} return render(request,'reg.html',locals())