macro 標簽,和靜態文件,以及templates


1 模板 -Templates
    1 什么是模板
        模板,在Flask中就是允許響應給用戶看的網頁在模板中,允許包含“占位變量”來表示動態的內容
        模板最終也會被解析成字符串再響應給客戶端,這一過程通常稱為“渲染”
    2 模板的設置
        默認情況下,Flask會在程序文件夾中的 templates 的子文件夾中搜索模板
        
        默認情況下,需要手動創建 templates 文件夾
    3 模板的渲染
        作用:在視圖中,將模板文件(xx.html)渲染成字符串之后,再響應給客戶端瀏覽器
        函數:render_template(xx.html)
    4 模板中的語法(重難點)
        1 變量
            變量是一種特殊的占位符,告訴模板引擎該位置的值是從渲染模板時的數據中獲取出來的
            在視圖中:
            app.route('/')
            def index():
                return render_template('xx.html',變量1 = 值1,變量2 = 值2)
        2 過濾器
            1 什么是過濾器
                過濾器是允許在變量輸出前改變變量的值
            2 語法
                {{ 變量|過濾器}}
                Jinja2 模板中常見的過濾器:
                過濾器名        說明
                capitalize         首字符變大寫,其他變小寫
                lower            將值轉換為小寫
                upper            將值轉換為大寫
                title            將值中的每個單詞首字符變大寫
                trim            去掉值兩邊的空格
            3 標簽
                1 什么是標簽
                    每個標簽標示的是不同的服務器端的功能
                2 常用標簽
                    1。 if標簽
                        1 基本if結構
                            {% if 條件 %}
                            {% endif %2 if... else 結構
                            {% if 條件 %}
                                滿足條件時要運行的代碼
                            {% else %}
                                不滿足條件時要運行的代碼
                            {% endif %}
                        3  if...elif ..elif ..else
                            {% if 條件1 %}
                                滿足條件1 ,要運行的代碼
                            {% elif 條件2 %}
                                滿足條件2,要運行的代碼
                            {% else %}
                            {% endif %}
                    2 for 標簽
                        {% for 變量 in 元組|字典|列表%}
                        {% endfor %}
                        在 Jinja2模板的循環中,支持內部變量-loop
                        loop作用:記載當前循環中的一些相關信息
                        loop 常用屬性
                            1 index
                                用法:loop.index
                                作用:記錄當前循環的次數,從 1 開始紀錄
                            2 index0
                                用法: loop.index0
                                作用:同上,從0開始記錄
                            3 first
                                用法:loop.first
                                作用:值為True,則表示當前循環是第一次循環
                            4 last
                                用法:loop.last
                                作用:值為True,則表示當前循環是最后一次循環
                    3 macro 標簽(宏)
                        1 作用:
                            相當於是在模板中聲明函數
                        2 語法
                            使用{% macro %}聲明宏
                            {% macro 名稱(參數列表) %}
                            {% endmacro %}
                        3 在獨立的文件中聲明宏
                            1 創建 macro.html 模板文件
                                作用:定義項目中要用到的所有的宏
{% macro show_p(str)%}
<p style="background: orange">{{str}}</p>
{% endmacro %}
{% macro show_li(str) %}
    <li><p style="font-size: 20px;">內容</p></li>
        <span style="color: red;">{{str}}</span>
{% endmacro %}
 
         
                2 在使用的網頁中,導入macro.html
                                {% import 'macro.html' as macros %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% import 'macro.html' as macros %}

{% for i in list_1 %}
    {{macros.show_li(i)}}
{% endfor %}
</body>
</html>
          4 include 標簽
            將其他的模板文件包含到當前的模板文件中
            語法:{% include 'xx.html' %}
             {% include '05-head.html' %}
     5 靜態文件處理
      1 什么是靜態文件
        在Flask中不能與服務器動態交互的文件都是靜態文件
          如:圖片,css文件,Js文件,音視頻文件
      2 靜態文件的處理
        1 所有的靜態文件必須放在名為static 的目錄中
          static目錄要放在項目的根目錄處
        2 所有的靜態文件必須通過 /static/路徑訪問
          /static/images/a.jpg
          /static 要到靜態資源目錄中繼續搜索
 1 模板
  1 靜態文件地址的反向解析
    url_for('static',filname='<file_path>')
    et:
    url_for('static',filename='image/b041.jpg')
  2 模板的繼承
    1 什么是模板的繼承
      模板的繼承類似於類的繼承,如果一個模板中出現的內容來自於另一個模板的話,那么就可以使用繼承的方式來簡化開發
    2 語法
      1 父模板
        需要定義出哪些東西在子模板中是可以被重寫的
        {{ block 塊名}}
          父模板中正常顯示的內容
        {{ endblock }}
          block
            1 在父模板中是可以正常顯示的,沒有任何影響
            2 在子模板中是可以被重寫的
      2 子模板
        1 需要指定繼承來自哪個父模板
          {% extends 父模板的名稱 %}
        2 重寫父模板中對應的內容
          {{ block 塊名 }}
              此處編寫的內容會覆蓋掉父模板中同名block的內容
              允許通過{{ super() }}來調用父模板中的內容
          {{ endblock }}
2 修改配置
 1 構建Flask 應用時允許指定的配置信息
  app =Flask(__name__,template_folder='muban',static_url_path='/s',static_folder='/sta')
    template_folder:指定存放模板的文件夾名稱
    static_url_path:訪問靜態資源的路徑
    static_foler:指定存放靜態文件目錄名稱
      在項目的根目錄中,有一個名為sta的目錄用於存放靜態文件
3 請求(request) 和 響應(response)
   1 HTTP協議
    Request Headers - 請求消息頭
    Response Headers - 響應消息頭
  2 請求對象 - request
    request - 請求對象,封裝了所有與請求相關的信息,如:請求數據,請求消息頭,請求路徑,...
    在Flask中,要使用request 的話,必須先導入
    from flask import request
    1 request 的常用成員
      1 scheme: 獲取請求方案(協議)
      2 method: 獲取本期請求的請求方式(重點)
      3 args :獲取使用get請求方式提交的數據
      4 form :獲取使用post 請求方式提交的數據
      5 cookies: 獲取cookies的相關信息
      6 headers: 獲取請求消息頭的相關信息
      7 files:獲取上傳的文件
      8 path :獲取請求的url地址
      9 full_path :獲取請求的url地址(進入到主機后的請求資源地址,包含請求參數)
      10 url :獲取完整的請求地址,從協議開始的地址
    2 獲取請求提交的數據
      1 get 請求方式
        1 表單允許實現get請求
          <form action=""> method ="get">
            姓名:<input name ='uname'>
          </form>
        2 在請求地址后拼請求提交的參數
          request.args封裝的是get 請求的數據
      2 post 請求方式
        post請求只有在表單中才能夠被觸發
        <form method='post'>
        獲取post 請求提交的數據:
          request.form 封裝的就是post請求的數據,類型為字典
        request.form['name']:獲取name 對應的值
        request.form.get('name'):獲取name 對應的值
        request.form.getlist('name'):獲取name 列表數據(如復選框,下拉列表)
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM