django是能夠自動重啓的(重啓機制:內部監測到文件修改就會重啓),可是有時候反應速度較慢;也有可能在你代碼沒寫完時就重啓會報錯html
超文本傳輸協議前端
1. 基於tcp/ip協議之上的應用層
2. 基於請求相應的(被動響應)
3. 無狀態(不保存用戶狀態){因無狀態,cookie,session,token....}
4. 無鏈接(長鏈接 websocket)
• 請求行 (請求方式,版本協議)
• 請求頭 (一大堆k:v鍵值對)相似於開路先鋒,提早告知對方一些必要信息
• /r/n
• 請求體(真正的數據,發post請求是纔有,若是是get請求不會有)
• 響應行
• 響應頭
• /r/n
• 響應體
1xx: 服務端已經成功接收到數據,正在處理,能夠提交其餘數據
2xx: 服務端成功響應(如200,請求成功)
3xx: 重定向(當你沒有登陸,自動跳轉)
4xx:請求錯誤(404,請求資源不存在; 403,拒絕訪問,)
5xx:服務器內部錯誤(500服務器出現問題)
get請求python
朝人要數據(沒有請求體)web
post請求 數據庫
朝別人提交數據(用戶登陸)django
URL 統一資源定位符flask
讓人提交數據後端
簡單地wbe框架服務器
1. 手動處理http格式數據
2. http數據本身處理
2. 基於wsgiref模塊
1. urls.py 只放路因爲視圖函數對應關係
1. view.py 只放視圖函數
3. views.py 處理後端業務邏輯的視圖函數(視圖函數不僅僅是函數
4. 規律:只要你想加功能只須要在urls.py中添加一條對應的關係再去views.py 寫一個函數視圖
3. 動靜態網頁
1. 靜態網頁
1. 數據是寫死了,萬年不變
1. 動態網頁
1. 數據是實時獲取的
1. eg:
1. 後端獲取當前時間展現到前端
1. 後端獲取數據庫中的數據展現到前端
#### 疑問: 如何將後端獲取的數據 傳遞給html頁面 後端獲取的數據 傳遞給html頁面 >>>: 模板的渲染 jinja2 pip3 install jinja2 模板語法(極其貼近python後端語法) <p>{{ user }}</p> (變量相關) <p>{{ user.name }}</p> <p>{{ user['pwd'] }}</p> <p>{{ user.get('hobby') }}</p> websocket
{% for user_dict in user_list %} (邏輯相關)
<tr>
<td>{{ user_dict.id }}</td>
<td>{{ user_dict.name }}</td>
<td>{{ user_dict.pwd }}</td>
</tr>
{% endfor %}
1. 優勢: 大而全,自帶功能多,相似於航空母艦
缺點:有時過於笨重
缺點: 小而精,自帶功能不多,相似於遊騎兵,比較依賴於第三方模塊
優勢: 第三方模塊特別多,若是將flask第三方模塊加起來徹底能夠超過Django
異步非阻塞
A:socket部分
B:路由與視圖函數對應關係
C:模板語法
Django:
A用的別人的 wsgiref
B本身寫的
C本身寫的
Flask
A用的別人的 werkzeug(基於wsgiref)
B本身寫的
C用的別人的 jinja2
Tornado
三者全是本身寫的
注意事項: 1.計算機的名稱不能有中文 2.一個pycharm窗口就是一個項目 3.項目名裏面儘可能不要用中文
django版本問題 1.X 2.X 如今市面上用的比較多的仍是1.X 推薦你使用1.11.9~1.11.13
Django安裝:pip intsall Django(版本)
確認是否安裝成功:Django-admin
命令行式:
建立項目:
Django-admin startproject mysite
啓動項目:
python manage.py runserver
建立應用:
python manage.py startapp app01
一個django項目就相似因而一所大學,而app就相似於大學裏面的學院 django其實就是用來一個個應用的 一個app就至關於一塊獨立的功能 用戶功能 管理功能 django支持任意多個app
注意:
1. 使用命令行建立項目,不會自動建立templates文件夾,只能手動建
settings文件中手動寫[os.path.join(BASE_DIR, 'templates')]
pycharm建立:
可以自動建立template文件夾和路徑配置
也可以支持建立一個應用並註冊。