Django--建立

軟件開發架構: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識別到你的代碼變化以後會自動重啓,可是有時候反應速度比較慢,你能夠手動啓動,也能夠多刷新幾回瀏覽器

相關文章
相關標籤/搜索