• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • web框架之Django

    標簽: Django  mvt  mvc  Django流程

    web框架和Django流程

    1.web框架要點

    1.Web應用程序處理流程

    在這里插入圖片描述

    2.Web應用程序框架的意義
    • 用于搭建Web應用程序
    • 免去不同Web應用相同代碼部分的重復編寫,只需關心Web應用核心的業務邏輯實現
    3.web應用程序的本質
    • 接收并解析HTTP請求,獲取具體的請求信息
    • 處理本次HTTP請求,即完成本次請求的業務邏輯處理
    • 構造并返回處理結果——HTTP響應
    4.web框架學習方法
    • 如何搭建工程程序
      • 工程的組建
      • 工程的配置
      • 路由定義
      • 視圖函數定義
    • 如何獲取請求數據(操作request對象)
    • 如何構造響應數據(構造response對象)
    • 框架提供的其他功能組件的使用
      • 數據庫
      • 模板
      • admin

    2.Django流程(重點)

    1.Django介紹
    1.簡介

    ? Django,發音為[`d?æ?ɡ??],是用python語言寫的開源web開發框架,并遵循MVC設計。勞倫斯出版集團為了開發以新聞內容為主的網站,而開發出來了這個框架,于2005年7月在BSD許可證下發布。這個名稱來源于比利時的爵士音樂家DjangoReinhardt,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。由于Django在近年來的迅速發展,應用越來越廣泛,被著名IT開發雜志SDTimes評選為2013SDTimes100,位列"API、庫和框架"分類第6位,被認為是該領域的佼佼者。

    ? Django的**主要目的是簡便、快速的開發數據庫驅動的網站。**它強調代碼復用,多個組件可以很方便的以"插件"形式服務于整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展性。它還強調快速開發和DRY(DoNotRepeatYourself)原則。

    2.特點
    1).重量級框架

    對比Flask框架,Django原生提供了眾多的功能組件,讓開發更簡便快速。

    • 提供項目工程管理的自動化腳本工具
    • 數據庫ORM支持(對象關系映射,英語:Object Relational Mapping)
    • 模板
    • 表單
    • Admin管理站點
    • 文件管理
    • 認證權限
    • session機制
    • 緩存

    2).MVT模式

    有一種程序設計模式叫MVC,其核心思想是分工、解耦,讓不同的代碼塊之間降低耦合,增強代碼的可擴展性和可移植性,實現向后兼容。

    ? MVC的全拼為Model-View-Controller,最早由TrygveReenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程序語言Smalltalk發明的一種軟件設計模式,是為了將傳統的輸入(input)、處理(processing)、輸出(output)任務運用到圖形化用戶交互模型中而設計的。隨著標準輸入輸出設備的出現,開發人員只需要將精力集中在業務邏輯的分析與實現上。后來被推薦為Oracle旗下Sun公司Java EE平臺的設計模式,并且受到越來越多的使用ColdFusion和PHP的開發者的歡迎。現在雖然不再使用原來的分工方式,但是這種分工的思想被沿用下來,廣泛應用于軟件工程中,是一種典型并且應用廣泛的軟件架構模式。后來,MVC的思想被應用在了Web開發方面,被稱為Web MVC框架。

    MVC模式說明:

    在這里插入圖片描述

    • M全拼為Model,主要封裝對數據庫層的訪問,對數據庫中的數據進行增、刪、改、查操作。
    • V全拼為View,用于封裝結果,生成頁面展示的html內容。
    • C全拼為Controller,用于接收請求,處理業務邏輯,與Model和View交互,返回結果。
    Django的MVT

    在這里插入圖片描述

    • M全拼為Model,與MVC中的M功能相同,負責和數據庫交互,進行數據處理。
    • V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。
    • T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。

    注:差異就在于黑線黑箭頭標識出來的部分

    Django學習資料
    2.虛擬環境
    1. 為什么要搭建虛擬環境?
      • 如果在一臺電腦上, 想開發多個不同的項目, 需要用到同一個包的不同版本, 如果使用上面的命令, 在同一個目錄下安裝或者更新, 新版本會覆蓋以前的版本, 其它的項目就無法運行了;

      • 解決方案

        作用:虛擬環境可以搭建獨立的python運行環境, 使得單個項目的運行環境與其它項目互不影響,所有的虛擬環境都位于/home/下的隱藏目錄.virtualenvs下

    2. 搭建虛擬環境步驟
      1. 安裝虛擬環境

        sudo pip install virtualenv
        sudo pip install virtualenvwrapper
        
      2. 安裝完虛擬環境后,如果提示找不到mkvirtualenv命令,須配置環境變量:

        # 1、創建目錄用來存放虛擬環境
        mkdir $HOME/.virtualenvs
        
        # 2、打開~/.bashrc文件,并添加如下:
        export WORKON_HOME=$HOME/.virtualenvs
        source /usr/local/bin/virtualenvwrapper.sh
        
        # 3、運行
        source ~/.bashrc
        
    3. 創建虛擬環境
      • 提示:如果不指定python版本,默認安裝的是python2的虛擬環境

      • 在python2中,創建虛擬環境

        mkvirtualenv 虛擬環境名稱
        例 :mkvirtualenv py_django
        
      • 在python3中,創建虛擬環境

        mkvirtualenv -p python3 虛擬環境名稱
        例 :mkvirtualenv -p python3 py3_django
        

      提示 :

      • 創建虛擬環境需要聯網
      • 創建成功后, 會自動工作在這個虛擬環境上
      • 工作在虛擬環境上, 提示符最前面會出現 “虛擬環境名稱”
    4. 使用虛擬環境
      1. 查看虛擬環境的命令 :workon;

      2. 使用虛擬環境的命令 :

        workon 虛擬環境名稱
        例 :使用py3_django的虛擬環境
        workon py3_django
        
      3. 退出虛擬環境的命令 :deactivate;

      4. 刪除虛擬環境的命令 :

        rmvirtualenv 虛擬環境名稱
        例 :刪除虛擬環境py3_django
        先退出:deactivate
        再刪除:rmvirtualenv py3_django
        
    5. 在虛擬環境安裝工具包
      1. 工具包安裝的位置 :

        # python2版本下
        ~/.virtualenvs/py_flask/lib/python2.7/site-packages/
        # python3版本下
        ~/.virtualenvs/py3_flask/lib/python3.5/site-packages
        
      2. python3版本下安裝django-1.11.11的包 :

        pip install 包名稱
        例 : 安裝django-1.11.11的包
        pip install django==1.11.11
        
      3. 查看虛擬環境中安裝的包 :pip list;

    3.創建Django項目步驟
    1. 創建Django項目

      django-admin startproject name
      django-admin startproject 工程名稱
      想要在桌面的code目錄中創建一個名為bookmanager的項目工程,可執行如下命令:
      cd ~/Desktop/Code
      django-admin startproject bookmanager
      
    2. 工程目錄說明:

      • 查看創建的工程目錄:tree bookmanager ;

      • 與項目同名的目錄,此處為bookmanager。

      • settings.py是項目的整體配置文件。

      • urls.py是項目的URL配置文件。

      • wsgi.py是項目與WSGI兼容的Web服務器入口。

      • manage.py是項目管理文件,通過它管理項目。

    3. 運行開發服務器:

      在開發階段,為了能夠快速預覽到開發的效果,django提供了一個純python編寫的輕量級web服務器,僅在開發階段使用。

      運行服務器命令如下:

      python manage.py runserver ip:端口
      或:python manage.py runserver
      注意:可以不寫IP和端口,默認IP是127.0.0.1,默認端口為8000
      django默認工作在調式Debug模式下,如果增加、修改、刪除文件,服務器會自動重啟。
      按ctrl+c停止服務器。
      
    4. 創建子應用

      1. 創建子應用:

        python manager.py startapp name
        manage.py為上述創建工程時自動生成的管理文件。
        例如,在剛才創建的bookmanager工程中,想要創建一個用戶book子應用模塊,可執行:
        cd ~/Desktop/code/bookmanager
        python manage.py startapp book
        執行后,可以看到工程目錄中多出了一個名為book的子目錄
        
      2. 子應用目錄說明:

        • admin.py文件跟網站的后臺管理站點配置相關。
        • apps.py文件用于配置當前子應用的相關信息。
        • migrations目錄用于存放數據庫遷移歷史文件。
        • models.py文件用戶保存數據庫模型類。
        • tests.py文件用于開發測試用例,編寫單元測試。
        • views.py文件用于編寫Web應用視圖。
      3. 注冊安裝子應用

        創建出來的子應用目錄文件雖然被放到了工程項目目錄中,但是django工程并不能立即直接使用該子應用,需要注冊安裝后才能使用。

        在工程配置文件settings.py中,INSTALLED_APPS項保存了工程中已經注冊安裝的子應用,初始工程中的INSTALLED_APPS如下:

        # Application definition
        # 安裝/注冊/子應用
        INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
        ]
        

        注冊安裝一個子應用的方法,即是將子應用的配置信息文件apps.py中的Config類添加到INSTALLED_APPS列表中。

        例如,將剛創建的book子應用添加到工程中,可在INSTALLED_APPS列表中添加**‘book.apps.BookConfig’**。

        # Application definition
        # 安裝/注冊/子應用
        INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'book.apps.BookConfig',
            'login.apps.LoginConfig',
            'pay.apps.PayConfig',
        ]
        
      4. 設置PyCharm環境:Project Interpreter

    4.模型
    • 當前項目的開發, 都是數據驅動的。

    • 例如書籍信息管理的數據關系:書籍和人物是 :一對多關系

    • 要先分析出項目中所需要的數據, 然后設計數據庫表.

      1.使用Django進行數據庫開發的提示 :

      • MVT設計模式中的Model, 專門負責和數據庫交互.對應(models.py)
      • 由于Model中內嵌了ORM框架, 所以不需要直接面向數據庫編程.
      • 而是定義模型類, 通過模型類和對象完成數據庫表的增刪改查.
      • ORM框架就是把數據庫表的行與相應的對象建立關聯, 互相轉換.使得數據庫的操作面向對象.

      2.使用Django進行數據庫開發的步驟 :

      • 定義模型類

        • 根據書籍表結構設計模型類:

          • 模型類:BookInfo
          • 書籍名稱字段:name
        • 根據人物表結構設計模型類:

          • 模型類:PeopleInfo
          • 人物姓名字段:name
          • 人物性別字段:gender
          • 外鍵約束:book
            • 外鍵要指定所屬的模型類book = models.ForeignKey(BookInfo)
        • 說明 :

          • 書籍-人物的關系為一對多. 一本書中可以有多個英雄.
          • 不需要定義主鍵字段, 在生成表時會自動添加, 并且值為自增長.
        • 根據數據庫表的設計

          models.py中定義模型類,繼承自models.Model

          from django.db import models
          
          # Create your models here.
          # 準備書籍列表信息的模型類
          class BookInfo(models.Model):
              # 創建字段,字段類型...
              name = models.CharField(max_length=10)
          
          # 準備人物列表信息的模型類
          class PeopleInfo(models.Model):
              name = models.CharField(max_length=10)
              gender = models.BooleanField()
              # 外鍵約束:人物屬于哪本書
              book = models.ForeignKey(BookInfo)
          
      • 模型遷移

        1. 生成遷移文件:根據模型類生成創建表的語句

          python manage.py makemigrations
          
        2. 執行遷移:根據第一步生成的語句在數據庫中創建表

          python manage.py migrate
          
      • 操作數據庫:默認采用**sqlite3**數據庫來存儲數據

    5.站點管理
    • 站點: 分為內容發布和公共訪問兩部分

    • 內容發布的部分由網站的管理員負責查看、添加、修改、刪除數據

    • Django能夠根據定義的模型類自動地生成管理模塊

    • 使用Django的管理模塊, 需要按照如下步驟操作 :

      • 1.管理界面本地化

        • 本地化是將顯示的語言、時間等使用本地的習慣,這里的本地化就是進行中國化.

        • 中國大陸地區使用簡體中文, 時區使用亞洲/上海時區, 注意這里不使用北京時區.

        • 本地化前
          在這里插入圖片描述

        • 本地化后
          在這里插入圖片描述

      • 2.創建管理員

        1.創建管理員的命令 :python manage.py createsuperuser;

        2.按提示輸入用戶名、郵箱、密碼

        3.重置密碼:python manager.py changepassword 用戶名

      • 3.注冊模型類

        在應用的admin.py文件中注冊模型類

        • 需要導入模型模塊 :from book.models import BookInfo,PeopleInfo;
          在這里插入圖片描述
        • 注冊模型成功后, 就可以在站點管理界面方便快速的管理數據;
      • 4.發布內容到數據庫

        發布內容后,優化模型類展示

        # 準備書籍列表信息的模型類
        class BookInfo(models.Model):
            # 創建字段,字段類型...
            name = models.CharField(max_length=10)
        
            def __str__(self):
                """將模型類以字符串的方式輸出"""
                return self.name
        
    6.視圖和URL
    • 站點管理頁面做好了, 接下來就要做公共訪問的頁面了.

    • 對于Django的設計框架MVT:

      • 用戶在URL中請求的是視圖.
      • 視圖接收請求后進行處理.
      • 并將處理的結果返回給請求者.
    • 使用視圖時需要進行兩步操作

      • 1.定義視圖

        • 視圖就是一個Python函數,被定義在應用的views.py中.
        • 視圖的第一個參數是HttpRequest類型的對象reqeust,包含了所有請求信息.
        • 視圖必須返回HttpResponse對象,包含返回給請求者的響應信息.
        • 需要導入HttpResponse模塊 :from django.http import HttpResponse
      • 2.配置URLconf

        查找視圖的過程 :

        • 1.請求者在瀏覽器地址欄中輸入URL, 請求到網站.

        • 2.網站獲取URL信息.

        • 3.然后與編寫好的URLconf逐條匹配.

        • 4.如果匹配成功則調用對應的視圖.

        • 5.如果所有的URLconf都沒有匹配成功.則返回404錯誤.
          在這里插入圖片描述

      1.URLconf入口

      2.需要兩步完成URLconf配置

      • 1.在項目中定義URLconf

      • 2.在應用中定義URLconf

        提示:一條URLconf包括URL規則、視圖兩部分

        • URL規則使用正則表達式定義.
        • 視圖就是在views.py中定義的視圖函數.

      3.url匹配過程
      在這里插入圖片描述

      4.View和URL匹配流程
      在這里插入圖片描述

    7.模板

    1.提示 :

    • 漂亮的頁面需要htmlcssjs.

    • 可以把這一堆字段串全都寫到視圖中, 作為HttpResponse()的參數,響應給客戶端.

    • 問題 :

      • 視圖部分代碼臃腫, 耦合度高.
      • 這樣定義的字符串是不會出任何效果和錯誤的.
      • 效果無法及時查看.有錯也不容易及時發現.

    2.解決問題 :模板

    • MVT設計模式中的T,Template
    • 在Django中, 將前端的內容定義在模板中, 然后再把模板交給視圖調用, 各種漂亮、炫酷的效果就出現了.

    3.模板使用步驟:

    1. 創建模板
    2. 設置模板查找路徑
    3. 模板接收視圖傳入的數據
    4. 模板處理數據
    8.案例實現
    實現步驟
    • 1.創建視圖

      • 查詢數據庫數據
      • 構造上下文
      • 傳遞上下文到模板
      # 定義視圖:提供書籍列表信息
      def bookList(request):
          # 查詢數據庫書籍列表數據
          books = BookInfo.objects.all()
          # 構造上下文
          context = {'books':books}
          # 數據交給模板處理,處理完成后通過視圖響應給客戶端
          return render(request, 'Book/booklist.html', context)
      
    • 2.創建模板

      • 讀取上下文數據
      • 構造網頁html文檔 : 書籍信息以列表樣式展示
      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>書籍列表信息</title>
      </head>
      <body>
      
    • 3.配置URLconf

      from django.conf.urls import url
      from book.views import index,bookList
      
      urlpatterns = [
          url(r'^$',index),
          # 匹配書籍列表信息的URL,調用對應的bookList視圖
          url(r'^booklist/$',bookList)
      ]
      
    9.配置文件和靜態文件

    配置文件

    1. BASE_DIR
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    

    當前工程的根目錄,Django會依此來定位工程內的相關文件,我們也可以使用該參數來構造文件路徑。

    2. DEBUG

    調試模式,創建工程后初始值為True,即默認工作在調試模式下。

    作用:

    • 修改代碼文件,程序自動重啟
    • Django程序出現異常時,向前端顯示詳細的錯誤追蹤信息

    注意:部署線上運行的Django不要運行在調式模式下,記得修改DEBUG=False和ALLOW_HOSTS。

    3. 本地語言與時區

    Django支持本地化處理,即顯示語言與時區支持本地化。

    本地化是將顯示的語言、時間等使用本地的習慣,這里的本地化就是進行中國化,中國大陸地區使用簡體中文,時區使用亞洲/上海時區,注意這里不使用北京時區表示。

    初始化的工程默認語言和時區為英語和UTC標準時區

    LANGUAGE_CODE = 'en-us'  # 語言
    TIME_ZONE = 'UTC'  # 時區# 時區
    

    將語言和時區修改為中國大陸信息

    LANGUAGE_CODE = 'zh-Hans'
    TIME_ZONE = 'Asia/Shanghai'
    

    靜態文件

    項目中的CSS、圖片、js都是靜態文件。一般會將靜態文件放到一個單獨的目錄中,以方便管理。在html頁面中調用時,也需要指定靜態文件的路徑,Django中提供了一種解析的方式配置靜態文件路徑。靜態文件可以放在項目根目錄下,也可以放在應用的目錄下,由于有些靜態文件在項目中是通用的,所以推薦放在項目的根目錄下,方便管理。為了提供靜態文件,需要配置兩個參數:

    • STATICFILES_DIRS存放查找靜態文件的目錄
    • STATIC_URL訪問靜態文件的URL前綴

    示例:

    1)在項目根目錄下創建static目錄來保存靜態文件。

    2) 在bookmanager/settings.py中修改靜態文件的兩個參數為

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),
    ]
    

    3)此時在static添加的任何靜態文件都可以使用網址**/static/文件在static中的路徑**來訪問了。

    例如,我們向static目錄中添加一個index.html文件,在瀏覽器中就可以使用127.0.0.1:8000/static/index.html來訪問。

    或者我們在static目錄中添加了一個子目錄和文件book/detail.html,在瀏覽器中就可以使用127.0.0.1:8000/static/book/detail.html來訪問。

    App應用配置

    在每個應用目錄中都包含了apps.py文件,用于保存該應用的相關信息。

    在創建應用時,Django會向apps.py文件中寫入一個該應用的配置類,如

    from django.apps import AppConfig
    
    
    class BookConfig(AppConfig):
        name = 'book'
    

    我們將此類添加到工程settings.py中的INSTALLED_APPS列表中,表明注冊安裝具備此配置屬性的應用。

    • AppConfig.name屬性表示這個配置類是加載到哪個應用的,每個配置類必須包含此屬性,默認自動生成。
    • AppConfig.verbose_name屬性用于設置該應用的直觀可讀的名字,此名字在Django提供的Admin管理站點中會顯示,如
    from django.apps import AppConfig
    
    class UsersConfig(AppConfig):
        name = 'book'
        verbose_name_plural = '圖書管理'
    
    版權聲明:本文為weixin_45439324原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_45439324/article/details/100836199

    智能推薦

    python Django之Web框架本質 (2)

    文章目錄 一.Web應用本質 1.socket本質 二.發送HTTP協議、響應 1.HTTP協議 2.HTTP發送響應 靜態網頁 動態網頁 三.jinja2模板渲染 一.Web應用本質 為了了解Django的客戶端與服務端的交互原理,我們需要了解Web應用的本質方便以后更加的理解Django原理 在Web應用中,服務器把網頁傳給瀏覽器,實際上就是把網頁的HTML代碼發送給瀏覽器,讓瀏覽器顯示出來。...

    【Django】Web框架本質

    原文:https://blog.csdn.net/qq_41964425/article/details/82841116 文章目錄 根據不同的路徑返回不同的內容 普通版 函數版 函數進階版 返回具體的HTML文件 讓網頁動態起來 服務器和應用程序 wsgiref 模塊 我們可以這樣理解:所有的Web應用本質上就是一個socket服務端,而用戶的瀏覽器就是一個socket客服端。 這樣我們就可以自...

    Python Web框架——Django

    使用框架簡單快速開發特定的系統。 一 MVC和MTV模式   二 簡介 Django時有Python開發的一個免費的開源網站框架,可以用于快速搭建高性能、優雅的網站。 Django框架的特點: 強大的數據庫功能 自帶強大的后臺功能 通過正則匹配隨意定義的網址 強大易擴展的模板系統 緩存系統 國際化 三 Django安裝方式 1.利用pip安裝Django。 2.利用源碼包安裝Django...

    Web框架:Django

    注:該文章為《Python核心編程》(第3版)學習筆記 1.  Web框架 Web開發除了從頭寫起,還可以在他人已有的基礎上上進行開發,這樣的Web開發環境稱為Web框架。 ORM:object-relation mapper,對象關系映射器。 2.  Django簡介 1)  預備條件 大多數部署都會使用Apeach 服務器。Djang...

    Django Web框架

    通過cmd命令行來新建一個web框架工程 先切換到指定的文件目錄下,然后輸入 生成框架如下 框架文件說明: 第一個mysite:外層目錄,名字可以更改 第二個mysite:工程目錄,用來保存代碼和文件 _init_:一個將mysite定義為包的空文件,用來初始化 settings:部署和配置整個工程的配置文件 urls:URL路由的聲明文件 wsgi:基于WSGI的web服務器配置文件 manag...

    猜你喜歡

    Django Web框架02

    《Django Web框架》 目錄 文章目錄 《Django Web框架》 目錄 Django的框架設計模式 模板 Templates Django 模板語言 模板的傳參 模板的變量 XSS攻擊 反射型xss 存儲型xss DOM xss 模板的標簽 過濾器 模板的繼承 url 反向解析 Django的框架設計模式 MVC 設計模式 MVC 代表 Model-View-Controller(模型-...

    Web框架之Django_10 重要組件(Auth模塊)

    閱讀目錄 一、auth模塊介紹 二、auth模塊常用方法 create_superuser() create_user() authenticate() login(HttpRequest, user) logout(request) is_authenticated() login_requierd() check_password(password) set_password(password...

    WEB框架之Django 實戰項目信息獲取

    第一步urls 配置 第二步views配置 第三步.html編輯 第四步models配置 第五步database初始化 最終結果 1.輸入網址訪問 1.輸入信息提交 遇到問題 新創建的datebase可能在pycharm內不能直接顯示,需要自己設置當前項目的database的路徑。...

    粗讀web框架之go gin和python django

    為什么引入web框架    web應用的本質 瀏覽器發送一個HTTP請求; 服務器收到請求,生成一個HTML文檔; 服務器把HTML文檔作為HTTP響應的Body發送給瀏覽器; 瀏覽器收到HTTP響應,從HTTP Body取出HTML文檔并顯示;    涉及的問題   解析http請求 找到對應的處理函數 生成并發送http響應 web框架工作流程...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    精品国产乱码久久久久久蜜桃不卡