WEB框架與Django簡介

WEB框架與Django簡介

HTTP協議:

​ 超文本傳輸協議:規定了客戶端與服務端消息傳輸的格式html

四大特性:

1.基於TCP/IP協議做用於應用層的協議

2.基於請求響應

3.無狀態

4.無鏈接

數據格式之請求:

1.請求首行
2.請求頭(一堆k,v鍵值對)
3.                           //空格不能忘了
4.請求體(post請求攜帶的數據)

數據格式之響應:

1.響應首行
2.響應頭(一堆k,v鍵值對)
3.                             //空格不能忘
4.響應體(post請求攜帶的數據)

響應狀態碼:

1xx   服務器已經成功接收到數據正在處理,能夠繼續提交其餘數據
2xx   請求成功 服務器已經將你請求的數據發送給你了
3xx   重定向
4xx   請求資源不存在
5xx   服務器錯誤

動靜態網頁:

靜態網頁:前端

​ 頁面上的數據都是寫死的,萬年不變python

動態網頁:web

​ 頁面上的數據是從後端動態獲取的數據庫

模板渲染

後端生成的數據直接傳遞給前端頁面使用(而且前端頁面能夠靈活的操做修改數據)django

模板語法須要依賴於第三方模塊jinja2後端

from jinja2 import Temlate

模板語法 jinjia2支持前端直接使用相似於python的語法操做數據瀏覽器

<!--user_dic是後端定義的變量-->
<p>{{user_dic}}</p>
<p>{{user_dic.name}}</p>
<p>{{user_dic['password']}}</p>
<p>{{user_dic.get('name')}}</p>

<!--鏈接數據庫-->
{% for user in user_dic}   <!--數據格式[{},{},{}]-->
    <tr>
        <td>{{user_dic.id}}</td>
        <td>{{user_dic.name}}</td>
        <td>{{user_dic.password}}</td>   
    </tr>
{% endfor %}

簡易版本的web請求流程圖緩存

web框架

python三大主流框架:

Django:大而全,自帶了不少功能模塊,相似於航空母艦(缺點:笨重)

Flask:短小精悍,自帶的功能模塊特別少,大部分都是依賴於第三方模塊(小而輕)

Tornado:異步非阻塞,主要用在處理高io,多路複用的狀況,能夠寫遊戲後端

各自特色:

Django:socket用的別人的wsgiref
       路由與視圖函數本身寫的
       模板渲染本身寫的

Flask:socket用的別人的werkzeug
      路由與視圖函數本身寫的
      模板渲染用的別人的jinja2

Tornado:socket、路由與視圖函數、模板渲染都是本身寫的

Django簡介

注意:服務器

  • 1.計算機的名稱不能有中文
  • 2.一個pycharm窗口就是一個項目,不要多個項目放在一個窗口裏面
  • 3.項目名不能起中文
django下載:版本問題推薦下載1.11.11版本
命令行直接下載:pip3 install django==1.11.11
驗證是否下載成功:django-admin

建立django項目的方式:

方式一(命令行建立):
    建立Django項目:django-admin startproject 項目名
    建立app應用:python3 manage.py startapp app01
    啓動django項目:python3 manage.py runserver
    ps:用命令行建立django默認不會自動建立templates文件夾,須要你手動本身建立(注意改文件夾路勁是否被添加配置文件中)
方拾二(pycharm建立):
    FILE => new project選擇第二個,django,須要注意名字不能有中文,選擇本地的解釋器,勾選後臺管理
    建立app:1.pycharm命令行鍵
                python3 manage.py startapp app01
            2.Tools下面run manage task功能欄
    啓動:點綠色小箭頭
    
強調:
    1.用jdango必定要保證只有一個在運行狀態
    2.必定記得清瀏覽器的緩存

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各個文件的做用

應用名:
    migration  數據遷移記錄相關數據
    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:內部傳入一個字符串,返回給瀏覽器
def index(request):
    #邏輯代碼
    return HttpResonse('ok')
render:

除request參數外還接受一個待渲染的模板文件和一個保存具體數據的字典參數,將數據填充進模板文件,最後把結果返回給瀏覽器

兩種給前端頁面傳值的方式:

def reg(request):
    user_dic = {'name':'lucas','age':18}
    return render(request,'reg.html',{'user_dic':user_dic})
def reg(request):
    user_dic = {'name':'lucas','age':18}
    return render(request,'reg.html',locals())  #會把上面定義的所有變量傳給前端頁面
redirect:重定向

接收一個URL參數,表示跳轉到指定的URL

def index(request):
    #業務邏輯
    return redirect('www.baidu.com')
相關文章
相關標籤/搜索