成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

在Django中自定義filter并在template中的使用詳解

瀏覽:7日期:2024-10-04 15:54:09

Django內置的filter有很多,然而我們由于業務邏輯的特殊要求,有時候仍然會不夠用,這個時候就需要我們自定義filter來實現相應的內容。接下來讓我們從自定義一個get_range(value)來產生列表的filter開始吧。

首先在你的django app的models.py的同級目錄建立一個templatetags的文件夾,并在里面新建一個init.py的空文件,這個文件確保了這個文件夾被當做一個python的包。在添加了templatetags模塊之后,我們需要重新啟動服務器才能使其有效。

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

然后在templatetags中新建一個python文件,文件名就是以后需要加載到頁面的自定義庫的名字。在這里我們新建一個generalfilters.py文件。

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

為了讓庫生效,必須在文件里添加一個模塊級別的register變量。它是template.Library的實例,確保了標簽和過濾器的有效性。

編輯generalfilters.py,添加

from django import templateregister=template.Library()@register.filterdef get_range(value): return range(value)

上述代碼中定義了一個生成列表的函數,@register.filter表示這個函數是一個過濾器。至此我們的生成列表的過濾器就已經寫好了。接下來我們需要把這個過濾器的庫加載到模板里。

在你想要使用的模板的頂部加上{% load generalfilters %},就可以使用這個過濾器了。

{% for i in 5|get_range_bet_within %} {{i}}{% endfor %}

運行結果

在Django中自定義filter并在template中的使用詳解

補充知識:Django 自定義篩選器:重寫DateFieldListFilter

我就廢話不多說了,大家還是直接看代碼吧!

class MyDateTimeFilter(admin.filters.DateFieldListFilter): def __init__(self, *args, **kwargs): super(MyDateTimeFilter, self).__init__(*args, **kwargs) now = timezone.now() # When time zone support is enabled, convert 'now' to the user’s time # zone so Django’s definition of 'Today' matches what the user expects. if timezone.is_aware(now): now = timezone.localtime(now) filter_end_date = now.replace(hour=0, minute=0, second=0, microsecond=0) filter_start_date_for_one_week = filter_end_date - datetime.timedelta(days=7) month_with_day31 = [1,3,5,7,8,10,12] if filter_end_date.month in month_with_day31 and filter_end_date.day == 31 and filter_end_date.month != 3: if filter_end_date.month == 1:filter_start_date_for_one_month = filter_end_date.replace(year=filter_end_date.year-1, month=12) else:filter_start_date_for_one_month = filter_end_date.replace(month=filter_end_date.month-1, day=30) elif filter_end_date.month == 3 and filter_end_date.day in [29, 30, 31]: if is_leap_year(filter_end_date.year):filter_start_date_for_one_month = filter_end_date.replace(month=filter_end_date.month-1, day=29) else:filter_start_date_for_one_month = filter_end_date.replace(month=filter_end_date.month-1, day=28) else: if filter_end_date.month == 1:filter_start_date_for_one_month = filter_end_date.replace(year=filter_end_date.year-1, month=12) else:filter_start_date_for_one_month = filter_end_date.replace(month=filter_end_date.month-1)filter_start_date_for_six_month = ’’ filter_start_date_for_six_month_month = (filter_end_date.month - 6 + 12) % 12 if filter_start_date_for_six_month_month == 0: filter_start_date_for_six_month_month = 12 if filter_start_date_for_six_month_month in month_with_day31: if filter_end_date.month > 6:filter_start_date_for_six_month = filter_end_date.replace(month=filter_start_date_for_six_month_month) else:filter_start_date_for_six_month = filter_end_date.replace(year=filter_end_date.year-1, month=filter_start_date_for_six_month_month) elif filter_start_date_for_six_month_month == 2: if filter_end_date.day in [29, 30, 31]:if is_leap_year(filter_end_date.year): filter_start_date_for_six_month = filter_end_date.replace(month=filter_start_date_for_six_month_month, day=29)else: filter_start_date_for_six_month = filter_end_date.replace(month=filter_start_date_for_six_month_month, day=28) else:filter_start_date_for_six_month = filter_end_date.replace(month=filter_start_date_for_six_month_month) else: if filter_end_date.day == 31 and filter_end_date.month >6:filter_start_date_for_six_month = filter_end_date.replace(month=filter_start_date_for_six_month_month, day=30) elif filter_end_date.day == 31 and filter_end_date.month <=6:filter_start_date_for_six_month = filter_end_date.replace(year=filter_end_date.year-1, month=filter_start_date_for_six_month_month, day=30) elif filter_end_date.day <31 and filter_end_date.month >6:filter_start_date_for_six_month = filter_end_date.replace(month=filter_start_date_for_six_month_month) else:filter_start_date_for_six_month = filter_end_date.replace(year=filter_end_date.year-1, month=filter_start_date_for_six_month_month) filter_end_date = filter_end_date + datetime.timedelta(days=1) self.links = (( (’------’, {}), (’Past week’, {self.lookup_kwarg_since: str(filter_start_date_for_one_week),self.lookup_kwarg_until: str(filter_end_date), }), (’Past month’, {self.lookup_kwarg_since: str(filter_start_date_for_one_month),self.lookup_kwarg_until: str(filter_end_date), }), (’Past 6 months’, {self.lookup_kwarg_since: str(filter_start_date_for_six_month),self.lookup_kwarg_until: str(filter_end_date), }), (’All’, {}), ))

以上這篇在Django中自定義filter并在template中的使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产真实精品久久二三区| 日韩黄色在线观看| 一区二区三区四区国产精品| 91美女片黄在线观看| 欧美裸体一区二区三区| 日本成人中文字幕在线视频 | 国产精品香蕉一区二区三区| 嫩草成人www欧美| 国产精品毛片a∨一区二区三区| 国产成人精品亚洲777人妖| 在线观看视频91| 亚洲一区二区三区视频在线播放| 欧美一区二区| 欧美mv日韩mv| 韩国v欧美v日本v亚洲v| 久久久久久一区二区| 一区二区三区精品在线| 欧美精品色网| 久久综合色一综合色88| 国产成人一区在线| 欧美日韩久久久久久| 亚洲国产美女搞黄色| 日韩一级大片| 日本一区二区三区国色天香 | 亚洲免费网址| 中文一区一区三区高中清不卡| 成人av在线资源| 91精品国产欧美一区二区| 精品在线亚洲视频| 欧美性受xxxx| 久久99精品一区二区三区| 久久永久免费| 亚洲国产精品久久人人爱| 影音先锋在线一区| 一区在线观看视频| 国内视频一区| 日本一区二区三区久久久久久久久不 | 国产精品三级视频| 午夜精品999| 亚洲国产高清在线| 韩国一区二区三区美女美女秀| 精品少妇一区二区三区免费观看| 高清国产午夜精品久久久久久| 制服丝袜国产精品| 国产精品影视网| 精品欧美黑人一区二区三区| 成人福利在线看| 久久先锋影音av鲁色资源| 99久久久无码国产精品| 精品国产一区二区三区不卡| 粉嫩av亚洲一区二区图片| 日韩美女视频在线| 91原创在线视频| 国产欧美精品国产国产专区| 欧美日韩一区二区三区免费| 国产精品久久久久久久久图文区 | 亚洲人成精品久久久久| 亚洲欧洲在线一区| 国产亚洲一区二区三区| 欧美视频网站| 国产精品护士白丝一区av| 在线日本成人| 一个色妞综合视频在线观看| 美女久久一区| 日日夜夜精品视频天天综合网| 久久xxxx精品视频| 亚洲国产欧美日韩另类综合 | 欧美日韩午夜| 亚洲欧美日韩国产一区二区三区| 一区二区三区偷拍| 日本免费在线视频不卡一不卡二| 欧美日韩一本到| 成人性色生活片| 中文av一区二区| 国产精品日韩欧美一区二区三区| 日本三级亚洲精品| 宅男在线国产精品| 99热国产精品| 国产精品久久久久久久浪潮网站| 亚洲视频1区| 另类欧美日韩国产在线| 欧美三级电影网| 成人理论电影网| 中文字幕制服丝袜成人av| 国产午夜精品一区二区三区欧美| 日韩**一区毛片| 91麻豆精品国产自产在线观看一区| 成人国产在线观看| 国产精品久久久久精k8| 国产一区二区久久久| 免费精品99久久国产综合精品| 777精品伊人久久久久大香线蕉| 东方aⅴ免费观看久久av| 国产精品午夜电影| 一本色道久久综合亚洲精品不卡| 日韩精品电影一区亚洲| 宅男在线国产精品| 国内成+人亚洲| 日本aⅴ免费视频一区二区三区| 日韩一区二区电影| 精品96久久久久久中文字幕无| 视频在线观看91| 26uuu国产在线精品一区二区| 亚洲理论在线| 精品一区二区久久久| 欧美韩国日本不卡| 色成人在线视频| 懂色av一区二区三区免费看| 亚洲欧洲成人自拍| 欧美视频第二页| 欧美一站二站| 三级欧美在线一区| 久久久综合网站| 欧美综合77777色婷婷| 成人性色生活片| 一区二区三区四区精品在线视频 | 日日骚欧美日韩| 精品91自产拍在线观看一区| 国产亚洲第一区| 国产精品亚洲а∨天堂免在线| 一区在线中文字幕| 制服.丝袜.亚洲.另类.中文| 亚洲二区在线| 国产盗摄女厕一区二区三区| 亚洲欧美日韩在线播放| 欧美区一区二区三区| 亚洲经典自拍| 风流少妇一区二区| 亚洲第四色夜色| 亚洲精品一区二区三区福利| 六月丁香综合| 蜜桃av一区二区| 欧美韩国日本一区| 欧美日韩www| 樱桃成人精品视频在线播放| 国产寡妇亲子伦一区二区| 亚洲在线观看免费视频| 精品乱码亚洲一区二区不卡| 亚洲欧美成人综合| 91免费视频大全| 久久9热精品视频| 亚洲激情图片qvod| 久久蜜桃av一区二区天堂| 欧美综合色免费| 亚洲另类黄色| 99vv1com这只有精品| 免费精品99久久国产综合精品| 中文字幕中文字幕一区| 欧美一级在线观看| 亚洲永久字幕| 欧美不卡在线| 国产毛片精品视频| 亚洲午夜精品久久久久久久久| 欧美电影免费观看高清完整版在 | 6080yy午夜一二三区久久| 国产精品永久| 欧美黄色aaaa| 国产精品一区免费视频| 亚洲成人www| 亚洲视频一区二区免费在线观看| 欧美一区二区三区四区高清| 久久av一区| 亚洲九九精品| 欧美少妇一区| www.成人网.com| 国内外精品视频| 亚洲chinese男男1069| 亚洲人成小说网站色在线| 中文一区二区完整视频在线观看| 精品国产123| 91精品国产色综合久久ai换脸| 欧美午夜精品一区| 欧美在线你懂的| 欧美主播一区二区三区| 色视频欧美一区二区三区| 亚洲深夜福利| 在线视频精品一区| 国产欧美另类| 一区二区三区高清视频在线观看| 亚洲国产欧洲综合997久久| 国内精品久久久久久久果冻传媒| 欧美福利影院| 欧美激情在线| 伊人成人在线视频| 亚洲精品美女| 麻豆精品传媒视频| 一本大道久久a久久精品综合| 色婷婷综合激情| 欧美午夜在线一二页| 欧美老年两性高潮| 欧美中文一区二区三区| 日本高清不卡视频| 在线观看网站黄不卡| 91久久精品国产91性色tv| 欧美在线短视频| 欧美亚洲日本国产| 色悠悠久久综合| 色天使久久综合网天天| 色狠狠桃花综合| 欧美日韩亚洲综合在线 欧美亚洲特黄一级|