溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

自定義django模板的 tags和filters

發(fā)布時(shí)間:2020-06-21 13:39:38 來(lái)源:網(wǎng)絡(luò) 閱讀:650 作者:quxf2012 欄目:開發(fā)技術(shù)

Custom template tags and filters

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

 

有一個(gè)應(yīng)用polls結(jié)構(gòu)如下,如何自定義templatetags

polls/
    __init__.py
    models.py
    templatetags/
        __init__.py
        poll_extras.py
    views.py


 一,安裝polls

INSTALLED_APPS = [
.....
'polls'
]


,新建templatetags

polls目錄下新建一個(gè)templatetags目錄,目錄下創(chuàng)建一個(gè)空文件__init__.py以讓python識(shí)別到其是一個(gè)包

 

1.自定義filter

 

from django import templateregister = template.Library()
@register.filter(name='cut')
def cut(value, arg):
    return value.replace(arg, '')
@register.filter
def lower(value):
    return value.lower()

 

2.tag

開啟takes_context,可以訪問當(dāng)前上下文context

 

import datetime
from django import template
register = template.Library()
 
@register.simple_tag(takes_context=True)
def current_time(context, format_string):#context接收當(dāng)前頁(yè)面的上下文字典
    timezone = context['timezone']
    return your_get_current_time_method(timezone, format_string)


3.Inclusion tags

直接導(dǎo)入渲染過(guò)的模板到頁(yè)面

#results.html

<ul>
{% for choice in choices %}
    <li> {{ choice }} </li>
{% endfor %}
</ul>


 

@register.inclusion_tag('results.html')
def show_results(poll):
    choices = poll.choice_set.all()
return {'choices': choices}
{% show_results poll %}  //返回如下
<ul>
  <li>First choice</li>
  <li>Second choice</li>
  <li>Third choice</li>
</ul>



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI