<wbr id="wsjqy"></wbr>

          <form id="wsjqy"></form>
          <sub id="wsjqy"></sub>
          <nav id="wsjqy"><listing id="wsjqy"></listing></nav>
          更多課程 選擇中心


          Python培訓

          400-111-8989

          Python django web學習(三)

          • 發布:Python培訓
          • 來源: 曾慶林整理django
          • 時間:2019-08-26 14:00

          3.模板

          MVT中的T,template

          3.0擴展

          問:模板渲染的過程是在服務器端完成的,還是在客戶端完成的?

          答:服務器。

          過程:

          客戶端訪問/use_template/,服務器調用對應的視圖函數,進行模板的渲染,給模板文件傳遞變量,將模板文件中的變量進行替換,獲取替換之后的html內容,將替換之后的html內容返回給客戶端,返回渲染之后的完整的html頁面,客戶端只是顯示。

          web網站開發的兩種模式:

          1)前后端不分離:前端看到的效果是由后端進行控制的。

          2)前后端分離:后端只返回前端所需的數據,至于數據怎么展示,由前端自己控制。

          3.1模板的作用

          渲染產生html頁面內容,進行數據展示

          3.2模板的使用

          flask中:

          render_template('模板文件名',<key>=<value>,.....)

          Django中:

          1、設置模板目錄

          在工程中創建模板目錄templates。在settings.py配置文件中修改TEMPLATES配置項的DIRS值:

          'DIRS': [os.path.join(BASE_DIR, 'templates')], # 此處修改

          2、render(request,'模板文件名',<字典>)

          render返回的是一個響應的對象。

          render 其實就是就是下面模板的詳細步驟的一個簡寫封裝。

          3.3模板的詳細步驟(重點掌握)

          如果我們不想返回響應對象,只是想渲染一下頁面,替換數據,那么我們可以按下面的來。

          我們使用模板的詳細步驟:

          1、加載模板:指定使用模板文件,獲取模板對象

          from django.template import loader

          temp = loader.get_template('模板文件名')

          2、模板渲染:給模板文件傳遞變量,將模板文件中的變量進行替換,獲取替換之后的html內容

          res_html = temp.render(字典)

          3、創建響應對象

          return HttpResponse(res_html)

          3.4模板語法(了解)

          3.4.1模板變量

          變量名必須由字母、數字、下劃線(不能以下劃線開頭)和點組成。

          語法如下:{{變量}}

          模板變量可以使python的內建類型,也可以是對象。

          Python django web學習(三)

          Python django web學習(三)

          django中的模板變量不能進行運算。

          3.4.2模板語句

          1)for循環:

          Python django web學習(三)

          2)if條件:

          Python django web學習(三)

          3)比較運算符如下:

          Python django web學習(三)

          4)布爾運算符如下:

          Python django web學習(三)

          注意:運算符左右兩側不能緊挨變量或常量,必須有空格。

          3.4.3過濾器

          語法如下:

          使用管道符號|來應用過濾器,用于進行計算、轉換操作,可以使用在變量、標簽中。

          如果過濾器需要參數,則使用冒號:傳遞參數。

          變量|過濾器:參數

          列舉幾個如下:

          safe,禁用轉義,告訴模板這個變量是安全的,可以解釋執行

          length,長度,返回字符串包含字符的個數,或列表、元組、字典的元素個數。

          default,默認值,如果變量不存在時則返回默認值。

          data|default:'默認值'

          date,日期,用于對日期類型的值進行字符串格式化,常用的格式化字符如下:

          Y表示年,格式為4位,y表示兩位的年。

          m表示月,格式為01,02,12等。

          d表示日, 格式為01,02等。

          j表示日,格式為1,2等。

          H表示時,24進制,h表示12進制的時。

          i表示分,為0-59。

          s表示秒,為0-59。

          value|date:"Y年m月j日 H時i分s秒"

          3.4.4注釋

          1)單行注釋語法如下:

          {#...#}

          2)多行注釋使用comment標簽,語法如下:

          1{% comment %}

          2...

          3{% endcomment %}

          3.4.5模板繼承

          模板繼承和類的繼承含義是一樣的,主要是為了提高代碼重用,減輕開發人員的工作量。

          父模板

          如果發現在多個模板中某些內容相同,那就應該把這段內容定義到父模板中。

          標簽block:用于在父模板中預留區域,留給子模板填充差異性的內容,名字不能相同。 為了更好的可讀性,建議給endblock標簽寫上名字,這個名字與對應的block名字相同。父模板中也可以使用上下文中傳遞過來的數據。

          1{% block 名稱 %}

          2預留區域,可以編寫默認內容,也可以沒有默認內容

          3{% endblock 名稱 %}

          子模板

          標簽extends:繼承,寫在子模板文件的第一行。

          {% extends "父模板路徑"%}

          子模版不用填充父模版中的所有預留區域,如果子模版沒有填充,則使用父模版定義的默認值。

          填充父模板中指定名稱的預留區域。

          1{% block 名稱 %}

          2實際填充內容

          3{{ block.super }}用于獲取父模板中block的內容

          4{% endblock 名稱 %}

          3.4.6Django和Flask模板的區別

          1、模板變量

          a)Django使用模板變量的時候,無論是字典、列表或元組的元素,都需要使用.不能使用[],字典是.key,元組和列表是.index下標;這是和flask有區別的地方。

          b)Django中的模板變量不能直接進行算術運算

          2、模板控制語句:條件判斷和for循環

          a)條件判斷:Django模板中在進行條件判斷時候,比較操作符兩邊必須有空格

          b)for循環:Django模板中的for循環和jinja2模板中for循環對比。

          Python django web學習(三)

          3、模板過濾器

          a) jinja2模板過濾器使用:

          {{ 模板變量 | 過濾器(參數...)}}

          b) Django中模板過濾器的使用:

          {{ 模板變量 | 過濾器:參數 }}

          注意:Django中過濾器:號之后只能接收一個參數

          4.數據庫

          ORM框架:

          作用:將模型類和數據表進行對應,通過面向對象的方式進行數據庫的操作。

          flask中SQLALchemy

          Django中自帶ORM框架,可以直接進行使用。

          4.1數據庫鏈接配置

          flask中:

          SQLALCHEMY_DATABASE_URI = 'mysql://<username>:<password>@<host_ip>:<port>/<db>'

          Django中:

          1、pip install pymysql

          2、setting里面的DATABASES里面進行數據庫配置

          3、首次啟動時需要在項目同名的目錄下__init__.py里面添加兩句話

          import pymysql導入

          pymysql.install_as_MySQLdb()調用方法

          sqlite是小型的數據庫,用在手機里,默認的是它。我們可以根據我們的需求改為mysql。

          4.2定義模型類

          1)flask定義模型類:

          Python django web學習(三)

          2)Django中定義模型類

          Python django web學習(三)

          數據刪除的時候,有一種邏輯刪除:就是不是真正的刪除,而是做一個刪除的標記,比如說加一個字段,0表示刪除,1表示沒刪除,然后展示的時候根據標記展示,也達到了刪除的目的。

          Django中的id不需要定義,默認為我們添加了id,是主鍵,并且自增長。id可以使用pk代替(primary key)

          定義字段名的時候,不允許使用連續的下劃線。

          字段類型

          Python django web學習(三)

          Python django web學習(三)

          選項

          Python django web學習(三)

          外鍵

          在設置外鍵時,需要通過on_delete選項指明主表刪除數據時,對于外鍵引用表數據如何處理,在django.db.models中包含了可選常量:

          CASCADE 級聯,刪除主表數據時連通一起刪除外鍵表中數據

          PROTECT 保護,通過拋出ProtectedError異常,來阻止刪除主表中被外鍵應用的數據

          SET_NULL 設置為NULL,僅在該字段null=True允許為null時可用

          4.3遷移生成數據表

          flask中:

          安裝擴展flask-migrate

          python manage.py db init生成遷移文件夾

          python manage.py db migrate 生成遷移文件

          python manage.py db upgrade 遷移

          Django中:

          不需要創建文件夾

          1、生成遷移文件

          python manage.py makemigrations

          2、遷移生成表

          python manage.py migrate

          mysql數據庫中:

          desc 表名;查看表結構

          在我們遷移的時候,Django的子應用會默認為我們創建一些表,

          4.4演示工具使用

          4.4.1shell工具

          Django的manage工具提供了shell命令,幫助我們配置好當前工程的運行環境(如連接好數據庫等),以便可以直接在終端中執行測試python語句。

          通過如下命令進入shell

          python manage.py shell

          然后導入我們的模型類

          from booktest.models import BookInfo, HeroInfo

          4.4.2查看MySQL數據庫日志

          查看mysql數據庫日志可以查看對數據庫的操作記錄。 mysql日志文件默認沒有產生,需要做如下配置:

          sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

          Python django web學習(三)

          把68,69行前面的#去除,然后保存并使用如下命令重啟mysql服務。

          sudo service mysql restart

          使用如下命令打開mysql日志文件。

          Python django web學習(三)

          4.5通過模型類和對象進行數據操作(增刪改查)

          4.5.1新增

          1、創建模型類對象,對象.save()

          注意:添加HeroInfo時,可以給hbook賦值,也可以直接表中hbook_id賦值

          Python django web學習(三)

          2、模型類.objects.create(...)

          Python django web學習(三)

          4.5.2修改

          1、 查詢對象->修改對象屬性->對象.save()

          修改模型類對象的屬性,然后執行save()方法

          1hero = HeroInfo.objects.get(hname='豬八戒')
          
          2hero.hname = '豬悟能'
          
          3hero.save()

          2、 模型類.objects.filter(...).update(...)

          使用模型類.objects.filter().update(),會返回受影響的行數

          1HeroInfo.objects.filter(hname='沙悟凈').update(hname='沙僧')

          4.5.3刪除

          1、查詢對象->對象.delete()

          模型類對象delete

          1hero = HeroInfo.objects.get(id=13)
          
          2hero.delete()

          2、模型類.objects.filter(...).delete()

          模型類.objects.filter().delete()

          1HeroInfo.objects.filter(id=14).delete()

          免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

          預約申請免費試聽課

          填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

          上一篇:Python django web學習(二)
          下一篇:Django框架中的英文單詞整理

          Python中類的屬性有哪幾種

          Python語法你知道多少

          Python 中常見的配置文件寫法

          Python爬蟲可以做什么

          • 掃碼領取資料

            回復關鍵字:視頻資料

            免費領取 達內課程視頻學習資料

          • 視頻學習QQ群

            添加QQ群:1143617948

            免費領取達內課程視頻學習資料

          Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

          選擇城市和中心
          黑龍江省

          吉林省

          河北省

          湖南省

          貴州省

          云南省

          廣西省

          海南省

          网友自拍 偷拍 校园性爱青青草曰逼视屏老鸭窝国产偷自视频区视频 百度 好搜 搜狗
          <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>