理解簡易的框架的簡易流程圖:
html
需求分析:前端
1.要根據用戶輸入的冉的後綴返回不一樣的內容python
要從符合http協議格式的數據中獲取用戶輸入的後綴web
2.本身手寫socket代碼sql
3.http數據要本身進行處理數據庫
根據功能的不一樣拆分紅不一樣的文件,用戶在瀏覽器窗口輸入url後之全部能獲取到相應的資源是由於後端早已經開設了相應的資源接口django
基於wsgiref模塊以及文件拆分的特色:flask
只要你想要開設新的資源後端
1.先在urls文件中寫url與函數的對應關係瀏覽器
2.再去views文件中去寫對應的函數
補充說明:
urls.py:路由與視圖函數的對應關係
views.py:裏面放的就是一堆視圖函數(視圖函數能夠是函數,也能夠是類)
templates文件夾:裏面放的就是一堆html文件(模板文件夾)
靜態網頁是寫死的,是永遠不會發生改變的
動態網頁的數據是動態獲取的,例如獲取當前的時間,或者從數據庫中獲取數據
這個模塊提供了一個能夠在html頁面上書寫相似於pthon後端的代碼來操做數據(模板語法)
下載方法
終端內 pip3 install jinja2
這裏flask框架模板語法使用的就是jinja2模塊,因此你只要下了flask框架 就會自動下載jinja2
模板語法(jinja2語法很是貼近python語法, 可是並非全部的框架使用的都是jinja模板語法)
{{xxx}} <p> {{xxx.username}} </p> <p> {{xxx['password']}} </p> <p> {{xxx.get('hobby')}} </p> <p> {{xxx.get('hobby')[0]}} </p> <p> {{xxx.get('hobby').1}} </p>
還能夠在前端頁面使用for循環獲取數據庫中的數據展現到前端頁面中
{% for user_dic in xxx %} <tr> <td>{{user_dic.id}}</td> <td>{{user_dic.name}}</td> <td>{{user_dic.hobby}}</td> </tr> {% endfor %}
這裏要注意: 模板語法是在後端實現的,前端根本不認識
django
優勢:大而全,自身攜帶的組件和功能特別多
缺點:笨重,當你的功能很少時,不須要使用不少其餘的功能
flask(主要包含了 請求上下文 以及 應用上下文)
優勢:小而精,自身攜帶的組件和功能特別特別少,可是第三方支持該框架模塊的特別多
缺點:受限於第三方模塊
tornado
異步非阻塞
自然支持高併發,能夠用來作部分遊戲的服務器
1.注意事項
計算機名稱不能有中文
項目文件名中也不能有中文
一個pycharm窗口就是一個單獨的完整的項目
python解釋器的版本也要注意不要使用3.7,推薦你使用3.4-3.6
2.版本的問題
建議使用1.x版本里的從1.11.09-1.11.13
3.安裝
pip3 install django==1.11.11
4.測試是否安裝成功
命令行輸入django-admin
如何建立django項目
1.命令行建立:
1.建立django項目
django-admin startroject mysite(項目名)
效果:建立一個mysite的文件夾
mysite -mysite --__init__.py --settings.py 項目配置文件 --urls.py 路由視圖函數對應關係 項目的總路由 --wsgi.py -manage.py
2.啓動django項目
python3 manage.py runserver # django默認的端口號是8000
3.建立具備獨立功能的app 一般狀況下app的名稱應該作到見名知意
python3 manage.py startapp app01
app01 --migrations文件夾 存放數據庫改動的記錄 --__init__.py --admin.py drango自帶的後臺管理 --apps.py 註冊app相關的 --models.py 模型類(orm) --tests.py 測試文件 --views.py 視圖函數 db.sqlite3 django自帶的一個小型的用於本地測試的數據庫(對日期格式的數據不是很敏感)
2.在pycharm中快捷建立
方法以及注意要點見下圖
ps:二者建立方式的不一樣之處
1.使用命令行建立的django項目是不會自動建立templates模板的文件夾,須要你手動建立
2.命令行建立的django項目不但沒有templates文件夾配置文件中也沒有填寫路徑(能夠本身手動去添加路徑),而pycharm建立的會自動添加
app的概念
是指application,應用的意思
django實際上是一個專一於開發app的web框架
每一個app就相似於不一樣的功能模塊,django支持多app
若是遇到代碼修改了始終沒有效果
多是在同一個端口的狀況下起了多個服務,一直跑的是最開始的那個服務
多是瀏覽器的緩存問題,解決辦法,在瀏覽器的network中點上disable cache
特別強調:在建立app以後必定要去settings文件中去註冊
註冊方式:'app01' 這裏是簡寫
完整寫法是 'app01.apps.App01Config'
djando可以自動重啓 可是它的重啓機制是隻要檢測到你的代碼有變化,在必定的時間間隔內就會自動重啓,全部有時候可能會出現你的代碼還沒寫完,就已經自動重啓,可能會報錯,這是正常現象
HttpResponse
返回字符串
render
返回html頁面 而且能夠給html頁面傳數據
模板的渲染(將數據在後端按照模板語法放入html對應的位置)
redirect
重定向
def index(request): return HttpResponse('你好啊 小妹妹') def login(request): return render(request, 'login.html', {'user_dic':{'username': 'jason', 'password': 123,}, 'userxxx': 'hello world'}) def home(request): return redirect('/index')