日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Django模板系统和admin模块

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django模板系统和admin模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
只需要記兩種特殊符號:{{  }}和 {% %}變量相關的用 {{}},
邏輯相關的用 {%%}。

Filters

語法: {{ value|filter_name:參數 }}default{{ value|default: "nothing"}}
如果value值沒傳的話就顯示nothinglength{{ value|length }}'|'左右沒有空格沒有空格沒有空格返回value的長度,如 value=['a', 'b', 'c', 'd']的話,就顯示4.filesizeformat將值格式化為一個 “人類可讀的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:{{ value|filesizeformat }}
如果 value 是 123456789,輸出將會是 117.7 MB。slice
切片
{{value|slice:"2:-1"}}
date格式化 {{ value
|date:"Y-m-d H:i:s"}}
safeDjango的模板中會對HTML標簽和JS等語法標簽進行自動轉義,
原因顯而易見,這樣是為了安全。但是有的時候我們可能不希望這些HTML元素被轉義,比如我們做一個內容管理系統,后臺添加的文章中是經過修飾的,
這些修飾可能是通過一個類似于FCKeditor編輯加注了HTML修飾符的文本,如果自動轉義的話顯示的就是保護HTML標簽的源文件。為了在Django中關閉HTML的自動轉義有兩種方式,
如果是一個單獨的變量我們可以通過過濾器“
|safe”的方式告訴Django這段代碼是安全的不必轉義。比如:value = "<a href='#'>點我</a>"{{ value|safe}}

自定義filter

1. 在app新建一個 templatetags 包    

app01/
__init__.py
models.py
templatetags/ # 在app01下面新建一個包
__init__.py
app01_filters.py # 建一個存放自定義filter的文件
views.py


2. 新建一個py文件,起個名字xx
3. 內部定義一個實現提供具體功能函數,按照固定的寫法注冊到django的模板語言中
from django import template
register = template.Library()

@register.filter()
def add_sb(value):
return value + " sb"

4. 重啟
5. 實際調用
1. 先導入新建的py文件名字
{% load?app01_filters %}
2. 調用自己寫的filter
{{ value|add_sb }}

  

for循環可用的一些參數

for ... empty

<ul>
{% for user in user_list %}<li>{{ user.name }}</li>
{% empty %}<li>空空如也</li>
{% endfor %}
</ul>

if,elif和else

{% if user_list %}用戶人數:{{ user_list|length }}
{% elif black_list %}黑名單數:{{ black_list|length }}
{% else %}沒有用戶
{% endif %}

if語句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判斷

csrf_token

這個標簽用于跨站請求偽造保護(防釣魚網站)

<form action="" method="post">{% csrf_token %}

Django的模板語言注意事項:

  1. Django的模板語言不支持連續判斷

{% if a > b > c %}
...
{% endif %}

  2. Django的模板語言中屬性的優先級大于方法

def xx(request):d = {"a": 1, "b": 2, "c": 3, "items": "100"}return render(request, "xx.html", {"data": d})如上,我們在使用render方法渲染一個頁面的時候,傳的字典d有一個key是items并且還有默認的 d.items() 方法,此時在模板語言中:{{ data.items }}
默認會取d的items key的值。

母版與繼承

1. 什么時候用模板和繼承?減少代碼重復。當很多頁面大部分區域都相同,只有少部分不相同的時候可以用!2. 母版- 繼承母版{% extends 'base.html '%}- 根據塊的名字去替換母版中指定位置的內容{% block ‘page-main’%}自定義的內容{% endblock %}- 根據實際需求定義子頁面才用到的CSS和JS文件引用{% block page-css %}{% endblock %}{% block page-js %}{% endblock %}3. 組件功能比較單一和獨立的html可以單獨寫成一個組件{% include 'nav.html'%}

?admin的定制

在admin.py中只需要講Mode中的某個類注冊,即可在Admin中實現增刪改查的功能,如:

admin.site.register(models.UserInfo)
....

但是,這種方式比較簡單,如果想要進行更多的定制操作,需要利用ModelAdmin進行操作,如:

class UserAdmin(admin.ModelAdmin):#在后臺用戶展示頁面顯示更多的內容,如:phone,avatarlist_display = ["phone","avatar"]#定制后臺展示頁面快速篩選list_filter = ["blog"]#展示頁面顯示更多內容后定制可以點擊跳轉項list_display_links = ['phone','avatar']#在展示頁面增加啊模糊搜索功能(如果添加多個字段,相互之間是or的關系)search_fields = ['phone','id']#自定義后臺批量處理方法#定義一個patch_init方法,函數名可以隨意,queryset固定的def patch_init(self,request,queryset):queryset.update(phone='+86'+models.UserInfo.phone)#給方法添加一個界面展示的簡單描述patch_init.short_description = '批量在手機號前添加+86'#可以自定義多個這種方法,但是都要添加到actiongs數組中actions = [patch_init]admin.site.register(models.UserInfo)

?

轉載于:https://www.cnblogs.com/dingyutao/p/9200876.html

總結

以上是生活随笔為你收集整理的Django模板系统和admin模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。