軟件開發架構:html
c/s架構前端
客戶端python
服務端web
b/s架構數據庫
瀏覽器django
服務端後端
本質:b/s架構也是c/s架構瀏覽器
HTTP協議緩存
超文本傳輸協議:規定了客戶端與服務端之間消息傳輸的格式服務器
四個特性:
一、基於TCP/IP協議做用於應用層的協議
二、基於請求響應
三、無狀態(服務端沒法保存用戶的狀態,一我的來千萬次我都記不住)
四、無鏈接(請求來一次響應一次以後就馬上斷開鏈接,二者之間就沒有任何關係了)
websocket是HTTP最大的一個補丁,它支持長鏈接
get請求:
朝服務端要資源
post請求:
朝服務端提交數據
數據格式之請求:
請求首行(標識HTTP協議的版本, 當前請求的方式 )
請求頭(一堆k,v鍵值對)
\r\n
請求體(post請求攜帶的數據)
請求數據之響應:
響應首行
響應頭(一堆k,v鍵值對)
\r\n
響應體(post請求攜帶的數據)
響應狀態碼:
1xx:服務器已經成功接受到你的數據正在處理,你能夠繼續提交其餘數據
2xx:請求成功 服務器已經成功將你請求的數據發給你了
3xx:重定向
4xx:請求資源不存在
5xx:服務器錯誤
動靜態網頁:
靜態網頁:
頁面上的數據都是寫死的,萬年不變的
動態網頁:
頁面上的數據是從後段動態獲取的,好比後端獲取當前時間,後端獲取數據庫數據而後傳遞給前端的頁面
模版渲染:
後端生成的數據直接傳遞給前端頁面使用(而且前端頁面能夠靈活的操做修改數據) >> 模版語法
模版渲染 模版語法須要依賴於第三方模塊 ---> pip3 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 %}
簡易版本的web請求流程圖:
templates:該文件夾存放的即便全部的頁面文件(.html)
什麼是web框架:
a:socket
b:路由和視圖函數
c:模版渲染
python三大主流web框架:
Django:大而全,自帶了不少功能模塊,相似於航空母艦(缺點:有點笨重)
a:用別人寫的wsgiref
b:本身寫的
c:本身寫的
Flask:短小精悍,自導的功能模塊特別少,大部分都是依賴於第三方模塊(小而輕)
a:用別人寫的wsgiref
b:本身寫的
c:用別人寫的jinja2
Tornado :異步非阻塞,主要用於處理高io 多路複用的狀況,能夠寫遊戲的後端
a、b、c:都是本身寫的
注意點:
一、計算機的名稱不能有中文
二、一個pycharm窗口就是一個項目,不要將多個項目放在一個窗口裏面
三、項目名不能有中文
Django簡介:
命令行下載:pip3 install django==1.11.11
驗證是否下載成功:django-admin
建立django的方式:
方式1(命令行建立):
建立django項目:django-admin startproject 項目名
建立app應用:python3 manage.py startapp app01
啓動django項目:python3 manage.py runserver
ps:用命令行建立django默認是不會建立temolates文件夾的,須要你手動進行建立(注意該文件夾路徑是否被添加到配置文件中)
方式2(pycharm建立):
FILE-->new project 選擇第二個django 須要注意名字不能有中文 選擇本地的解釋器,勾選後臺管理
建立app:
python3 manage.py startapp app01
Tools下面run manage task功能欄
啓動點綠色小箭頭
強調:
一、用django必定要保證只有一個在運行狀態
二、必定要記得清楚瀏覽器緩存
app(應用)的概念:
一個django項目就是一所大學
app就是大學裏面的一所所學院
注意新建立餓app須要在配置文件中註冊才能生效
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config' # 能夠用全稱 'app01' # 也能夠簡寫 ]
django各個文件的做用
應用名:
migrations:數據庫遷移記錄相關數據
admin.py:django後臺管理記錄
models.py:模型表相關
views.py:視圖函數相關
項目名:
settings.py:配置文件
urls.py:路由與視圖函數餓映射關係
templates:項目所能用到的全部的html文件
manage.py:django的入口文件
Django必會的三板斧:
from django.shortcuts import render,HttpResponse,redirect HttpResponse 返回字符串 render 返回一個html頁面 兩種給前端頁面傳值的方式 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()) redirect 重定向
django識別到你的代碼變化以後會自動重啓,可是有時候反應速度比較慢,你能夠手動啓動,也能夠多刷新幾回瀏覽器