MVC框架python
M - model : 模型 -- 與數據庫交互,操做數據庫git
V - view : 視圖 -- 展現頁面 HTML數據庫
C - controller : 控制器 -- 調度做用,負責業務邏輯django
MTV框架安全
M - model : 模型 -- 與數據庫交互,操做數據庫 ( ORM )app
T - template : 視圖 -- 模板,HTML框架
V - view : 視圖 -- 負責業務邏輯函數
{{ 變量名 }}
{{ 變量名. }} # 能夠經過點的方式獲取值
list.索引(索引值不能爲負)
dict.key / dict.keys / dict.values / dict.items
{{ 類實例化對象 }}
obj.屬性 / obj.方法
<!-- 注:-->oop
當模板系統遇到一個(.)時,會按照以下的順序去查詢:post
在字典中查詢 ( 若是字典中有key名字爲 'keys',查詢的時候先找keys對應的values)
屬性或者方法
數字索引
filters 過濾器 -- 用來修改變量的顯示結果
語法: {{ value|filter_name }} / {{ value|filter_name:參數 }}
<!-- ':' 左右沒有空格沒有空格沒有空格,參數最多有一個 -->
default -- 提供默認值
{{ xxx|default:'nothing' }} # 傳過來的變量不存在或者爲空,使用默認值
# 注:
在setting中TEMPLATES的OPTIONS能夠增長一個選項:string_if_invalid:'NOT FOUND',能夠替代default的的做用。(優先級高於default)
slice -- 切片
{{ name_list|slice:'0:1' }}
filesizeformat -- 文件大小格式化
'filesize': 1*1024
{{ filesize|filesizeformat }} # 1.0KB
add -- 表示 +
{{ num|add:1 }} # 數字相加
{{ string|add:'123' }} # 字符串拼接
{{name_list|add:other_list} # 列表合併
length -- 返回變量的長度
{{ value|length }}
join 使用字符串拼接列表
{{ name_list|join:'_' }}
truncatechars -- 按照字符分割.截斷的字符串,多餘的用'...'表示
{{ long|truncatechars:'15' }} # 只顯示15個字符,三個點也包含在15個字符內
truncatewords -- 按照單詞分割(按照空格)
{{ long|truncatewords:'6' }}
date -- 日期格式化
{{ now|date:'Y-m-d H:i:s' }}
# settings配置 -- Django中就能夠不用日期過濾器
USE_L10N = False
DATETIME_FORMAT = 'Y-m-d H:i:s'
safe -- 告訴django不須要轉義,是安全的
{{ js|safe }} # 在Python文件中設置 from django.utils.safestring import mark_safe mark_safe('<a href="https://www.baidu.com">跳轉</a>') {{ a }}
在app01文件下建立一個templatetags的python包
在包內建立py文件 -- 自定義名字 ( my_ tags.py )
在py文件中寫入
from django import template
register = template.Library() # regiter不能變,固定寫法
定義函數 + 裝飾器
@register.filter() # 添加裝飾器
def new_upper(value,arg=None): # arg接收過濾器的參數
return value.upper()
在模板中使用
{% load my_tags %} # 在模板中導入
{{ 'abc'|new_upper:dic }} # 函數名就是過濾器名
for
{% for i in list %}
{{ forloop.counter }}
{{ i }}
{% endfor %
for循環可用的一些參數
Variable(變量) | Description(描述) |
---|---|
{{ forloop.counter }} | 當前循環的從1開始的計數 |
{{ forloop.counter0 }} | 當前循環的從0開始的計數 |
{{ forloop.revcounter }} | 當前循環的倒敘計數(到1結束) |
{{ forloop.revcounter0 }} | 當前循環的倒敘計數(到0結束) |
{{ forloop.first}} | 當前循環是不是第一次循環 布爾值 |
{{ forloop.last}} | 當前循環是不是最後一次循環 布爾值 |
{{ forloop.parentloop }} | 當前循環父級循環的forloop |
for ... empty
{% for name in name_list %}
{{ name }}
{% empty %}
空的數據
{% endfor %}
if
{% if p1.age < 18 %} 他仍是個寶寶 {% elif p1.age == 18 %} 剛成年,能夠出家 {% else %} 騷老頭子壞得很 {% endif %}
<!-- 不支持算數運算 ,不支持連續判斷 -->
<!-- if語句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判斷。 -->
with
{% with agoni=person_list.1.name age=person_list.1.age %}
{{ agoni }} {{ age }}
{% endwith %}
csrf_token
這個標籤用於跨站請求僞造保護。
在頁面的form表單裏面寫上{% csrf_token %}
form表單中有一個隱藏的input標籤 name ='csrfmiddlewaretoken'
<!-- 看下圖 -->
<form action="" method="post"> {% csrf_token %} <input type="text" name="name"> <button>提交</button> </form>