好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解Django模板層過濾器和繼承的問題

詳解Django模板層過濾器和繼承的問題

熱門標簽:上海正規的外呼系統最新報價 長春極信防封電銷卡批發 企業彩鈴地圖標注 如何地圖標注公司 預覽式外呼系統 外賣地址有什么地圖標注 銀川電話機器人電話 煙臺電話外呼營銷系統 電銷機器人錄音要學習什么

過濾器

模板層對變量的操作實際還有很多,過濾器就是其中一種。學過Linux系統的一定知道管道操作符,其可以將上一步輸出直接作為下一步輸入進行處理,這里的過濾器就是類似管道符,其寫法也是以管道符|為標志,允許我們對模板層獲得的變量進行改變,例如大小寫轉換、增減大小等等

語法

{{ 變量|過濾器1|過濾器2:'值' |...}}

這里的過濾器可以分為兩類,一類是不帶參數的,例如lower,upper,safe;一類是帶參數的add:'10',冒號分隔,后面跟上值

過濾器 示例 說明
lower {{str lower}}
upper {{str upper}}
safe {{script safe}}
add {{num add:‘10'}}

示例:
views.py

def home(request):

    dic = {}
    dic['str'] = 'abc'
    dic['num'] = 90
    dic['script'] = 'script>alert("這是測試過濾器safe")/script>' #簡單的js代碼,可以彈出一個窗口
    return render(request, 'home.html', dic)

home.html

body>
    h2>過濾器upper: {{ str|upper }}/h2> # 全變成大寫字母
    h2>過濾器add: {{ num|add:'10' }}/h2> # 加10
    h2>過濾器safe: {{ script|safe }}/h2> # 不進行html轉義,適用直接執行js代碼,理解為代碼安全可以直接執行
/body>

如果不適用safe則輸出原始字符串,不會執行js代碼

除了以上過濾器,更多過濾器請參見https://docs.djangoproject.com/zh-hans/3.2/ref/templates/builtins

繼承

對于某個網站來說,一般又比較統一的風格,例如無論點擊網頁哪個標簽或者鏈接,導航欄和尾部都是基本一樣的內容,真正變的是中間的內容區域,如何才能讓不同的網頁有相同也有差異呢,django中對模板可以使用繼承的概念。
例如,有如下頁面,由三部分組成,第一塊是導航欄,無論哪個子頁面均是一樣,中間body區會因為點擊導航欄不同項目發生變化,而最后一塊尾部每個頁面都是一樣,如何實現上述要求呢?

  • 求同:Django模板層通過{% extends 'home.html' %}實現子頁面對home.html的繼承,也就是說只需要在每個子頁面寫上該行代碼即能完成對父頁面的繼承,但是需要注意的是不能繼承父頁面的相關視圖函數的變量
  • 存異:在父頁面(home.html)中使用{% block block_name %}...{% endblock block_name(可選) %}標記塊,凡是在標記塊中的內容在子頁面都可以被修改,修改方法是在{% block block_name %}子頁面重寫內容{% endblock block_name(可選) %}塊中重新更改內容即可

home.html

!DOCTYPE html>
html lang="en">

head>
    meta charset="UTF-8">
    meta http-equiv="X-UA-Compatible" content="IE=edge">
    meta name="viewport" content="width=device-width, initial-scale=1.0">
/head>

body>
    !-- 導航欄,每個頁面都一樣 -->
    h2>
        a href="/home" rel="external nofollow" >主頁/a>
        a href="/music" rel="external nofollow" >音樂頻道/a>
        a href="/sport" rel="external nofollow" >運動頻道/a>
    /h2>
    h2>
        {% block body %}
        h2>歡迎來到主頁!(該部分區域因頁面而異)/h2>
        {% endblock %}
        h3>如有問題請請聯系xxx@163.com(每個頁面都一樣)/h3>
/body>

/html>

music.html

{% extends 'home.html' %}

!-- 修改body區域內容 -->
{% block body %}
h2>歡迎來到音樂頻道!/h2>
{% endblock %}

sport.html

{% extends 'home.html' %}

!-- 修改body區域內容 -->
{% block body %}
h2>歡迎來到運動頻道!/h2>
{% endblock %}

views.py

import re
from django.http import HttpResponse
from django.shortcuts import render

def home(request):
    return render(request, 'home.html', dic)
def music(request):

    return render(request, 'music.html')
def sport(request):

    return render(request, 'sport.html')

urls.py

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', views.home),
    path('music/', views.music),
    path('sport/', views.sport),
]



學到這里,大家又可以小激動一下了,一個靜態網頁的基本架構慢慢成熟起來,將一個主頁應用到其他頁面,同時又保持其他頁面的差異,django的模板思想越來越清晰了。

到此這篇關于Django模板層過濾器和繼承的文章就介紹到這了,更多相關Django模板層過濾器內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django 模板中常用的過濾器實現
  • python使用布隆過濾器的實現示例
  • Python filter過濾器原理及實例應用
  • Django-rest-framework中過濾器的定制實例
  • 布隆過濾器的概述及Python實現方法
  • Python+Redis實現布隆過濾器
  • Django零基礎入門之常用過濾器詳解

標簽:宜昌 珠海 上饒 湖北 盤錦 西寧 潮州 佳木斯

巨人網絡通訊聲明:本文標題《詳解Django模板層過濾器和繼承的問題》,本文關鍵詞  詳解,Django,模板,層,過濾器,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Django模板層過濾器和繼承的問題》相關的同類信息!
  • 本頁收集關于詳解Django模板層過濾器和繼承的問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 波多野结衣女教师办公室最新章节 | Chinese白浆高潮videos| 孕妇大肚无码孕交AV视频| 国产三级伦理片| 成年人在线观看| 免费国产成人高清在线观看麻豆 | 夜夜操国产| 农村少妇在田里做爰| 高大丰满肥熟妇丰满大白屁股| gayxxxxgay呻吟受动漫| 国产日韩欧美swag在线观看| 亚洲自拍欧美另类小说| 男女做爰高清免在线费视频| 又爽又猛又硬免费看AV网站欧美| 美女日批直播| a级毛片免费| 吉尺明步大战黑人在线视频| 久久久碰久久久久摸| 男生插女生视频免费| 国产精品尤物在线| 黄色网址电影| 国产精品无码久久久最珍稀的是哪| 揭东县| 日本免费一级| 热re99久久精品国产99的亮度提升| 久久久中文字幕久久久5838 | 日韩欧美在线视频观看| free性意大利极品free性按摩| 亚洲 自拍 精品 在线 主播 | 老师脱??让学生摸??动漫| 色婷婷亚洲精品天天综合影院| 国产精品沙发午睡系列| 这家伙好大| 看一级特黄a大一片| 亚瑟AV精品| 男人的??伸到??涩涩| 美女被狂躁www离线观看视频| 国产第二页| 91无码人区精品毛片一区二区| 久久精品婷婷| 肌肉壮汉榨浓喷|