python MVC、MTV 框架介紹 Django 模板系統經常使用語法

              Django 框架簡介
一.MVC框架和MTV框架
1.MVC 全名Model View Controller,是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分.
優點:
耦合性低
重用性高
生命週期成本低
結構:
模型(Model) 與數據庫相關 存取數據
視圖(View) 處理業務邏輯 展現信息
控制器(Controller) 獲取用戶信息 給模型傳遞指令
2.Django的MTV 全名Model Template View 借鑑了MVC框架的思想,也是分紅三部分,來下降各個部分之間的耦合性。
結構:
模型(Model) 負責業務對象與數據庫的對象(ORM)
模板(Template) 負責如何把頁面展現給用戶
視圖(view) 負責業務邏輯,並在適當的時候調用Model和Template
Django還有一個urls分發器,它的做用是將一個個URL的頁面請求分發給不一樣的view處理,view再調用相應的Model和Templatehtml

Django模板系統
經常使用語法:
Django模板中有兩種特殊符號
{{}} 表示變量,在模板渲染的時候替換成值,
{%%} 表示邏輯相關的操做
{{變量名}} 變量名由字母數字和下劃線組成python

              點 (.) 在模板語言中有特殊含義,用來獲取對象的相應屬性值.數據庫

views中代碼以下:
def test(request):
l=[11,22,33]
d={'name':'alex'}

class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age

def dream(self):
return "{} isdreaming to be poorer".format(self.name)

Alex=Person(name='a',age=3000)
Egon = Person(name="Egon", age=9000)
Eva_J = Person(name="Eva_J", age=18)

per_list=[Alex,Egon,Eva_J]

return render(request,'test.html',{'l_list':l,'d':d,'per_list':per_list})
html中:
{{ l_list.1 }} --> 22
{{ d.name }} -->alex
{{ per_list.0.name }} -->取索引爲0的對象的name屬性
{{ per_list.0.dream }} -->取索引爲0的對象的dream屬性 ( .操做只能調用不帶參數的方法)
注意:
當模板系統遇到一個(.)時,會按照以下的順序去查詢
1.在字典中查詢
2.屬性或方法
3.數字索引

                      Filters 過濾器,用來修改變量的顯示結果。django

語法: {{value|filter_name:參數}}
'|'左右沒有空格沒有空格沒有空格
1.default
{{value|default:"nothing"}}
若是value值沒傳的話就顯示nothing 如value是如下幾種:none {} [] () "".
注意:
TEMPLATES的OPTIONS能夠增長一個選項:string_if_invalid:'找不到',能夠替代default的的做用。
2.filesizeformat
將值格式化爲一個 「人類可讀的」 文件尺寸
{{ value|filesizeformat }} 若是 value 是 123456789,輸出將會是 117.7 MB。
3.add
給變量加參數
數字
{{value|add:'2'}} {{ n|add:"2"}} ----6 n=4
列表
{{ l_list|add:s }} l_list=[11,22,33] s=[1,3,4]}}----[11, 22, 33, 1, 3, 4]
4.lower 小寫
{{ value|lower }}
5.upper 大寫
{{value|upper}}
6.title 標題
{{value|title}}
7.ljust 左對齊 {{ value|lower }} p標籤
8.rjust 右對齊 {{ value|rjust:"10" }} p標籤
9.center 居中 {{ value|center:"15" }} p 標籤
10.length
{{value|length}} 返回value的長度,如 value=['a', 'b', 'c', 'd']的話,就顯示4.
11.slice 切片
{{value|slice:"2:-1"}}
12.first 取第一個元素
{{value|first}}
13.last 取最後一個元素
{{ value|last }}
14.join
使用字符串拼接列表。同python的str.join(list)。
{{ value|join:" // " }}
15.truncatechars
若是字符串字符多於指定的字符數量,那麼會被截斷。截斷的字符串將以可翻譯的省略號序列(「...」)結尾。
參數:截斷的字符數
{{ value|truncatechars:9}} 加上...一共顯示九個
16.date 日期格式化
{{ value|date:"Y-m-d H:i:s"}}
views:
import datetime
time=datetime.datetime.now()
17.safe
Django的模板中會對HTML標籤和JS等語法標籤進行自動轉義,緣由顯而易見,這樣是爲了安全。
可是有的時候咱們可能不但願這些HTML元素被轉義,好比咱們作一個內容管理系統,
後臺添加的文章中是通過修飾的,這些修飾多是經過一個相似於FCKeditor編輯加註了HTML修飾符的文本,
若是自動轉義的話顯示的就是保護HTML標籤的源文件。爲了在Django中關閉HTML的自動轉義有兩種方式,
若是是一個單獨的變量咱們能夠經過過濾器「|safe」的方式告訴Django這段代碼是安全的沒必要轉義。
views :
'a_html': '<a href="https://www.baidu.com/">點擊</a>'
{{ a_html|safe }} 能夠點擊

自定義filter
自定義過濾器只是帶有一個或兩個參數的python函數
變量(輸入)的值 - -不必定是一個字符串
參數的值 - 這能夠有一個默認值,或徹底省略
在過濾器{{var | foo:「bar」}}中,過濾器foo將傳遞變量var和參數「bar」。

自定義的filter代碼文件擺放位置
app名 /templatetags 在app下新建一個package / 建一個存放自定義filter 的py文件

編寫自定義filter
from django import template
register=template.Library()安全

@register.filter 必定要加 必定要加
def fill(value,arg):
return value.replace("",arg)

@register.filter(name="addSB")
def add_sb(value):
return "{}SB".format(value)
使用自定義
{# 先導入咱們自定義filter那個文件 #}
{% load app01_filters %}架構

{# 使用咱們自定義的filter #}
{{ somevariable|fill:"__" }}
{{ d.name|addSB }}app

相關文章
相關標籤/搜索