Django-04.静态文件与模板详解(二)

7 篇文章 0 订阅
7 篇文章 0 订阅

1.自定义过滤器

新建一个django工程 名为lesson3
具体细节请见Django-01、初识Django和搭建Django helloworld
新建一个名为util的app
在util文件夹下新建一个文件夹templatetags 这个名称是固定的
在templatetags文件夹下新建一个空文件init.py
然后新建一个tags.py文件 往这个文件中写入

from django import template
register = template.Library()

@register.filter
def mycut(value, args):
    return value.replace(args, "").lower()

更改settings.py文件 在INSTALLED_APPS列表中添加

'util'

在util文件夹下新建一个views.py文件 往文件中写入

from django.shortcuts import render
from django.views import View

# Create your views here.


class UtilHtml(View):
    def get(self, request):
        name = "HJ LOVES SSQ"
        return render(request, 'Util.html', locals())

在lesson3文件夹下的template文件夹下新建一个util.html文件并添加以下代码

{% load tags %}  
{#导入tags#}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Util</title>
</head>
<body>
    {{ name|mycut:" " }}
</body>
</html>

在urls.py 中添加如下代码

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from util import views

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^util/$', views.UtilHtml.as_view())
]

这里写图片描述


2.自定义标签

在util.py中加入以下代码

@register.simple_tag
def curr_date(args):
    return datetime.datetime.now().strftime(args)

在util.html中加入以下代码

{% curr_date "%Y-%m-%d" %}

这里写图片描述


3.自定义包含标签

新建一个menu.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>menu</title>
</head>
<body>
    <br>
    {% for i in menu %}
        {{ i }}<br>
    {% endfor %}
</body>
</html>

在tags.py文件里加入以下代码

@register.inclusion_tag("menu.html")
def my_menu():
    menu = [1, 2, 3, 4, 5]
    return {'menu': menu}

再在util.html 文件末尾添加

{% my_menu %}

这里写图片描述


4.模板加载静态文件

在项目添加一个静态文件夹,并添加需要添加的静态文件(一般名叫static)
配置静态文件settings

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]

ps: 使用pycharm 创建完静态文件后,需要手动上传一次

在需要使用的html模版头部中添加导入

{% load static %}

使用

ps: 引入的路径是一个相对路径

5.附录

本文章代码如下
tags.py

import datetime
from django import template
register = template.Library()


@register.filter
def mycut(value, args):
    return value.replace(args, "").lower()


@register.simple_tag
def curr_date(args):
    return datetime.datetime.now().strftime(args)


@register.inclusion_tag("menu.html")
def my_menu():
    menu = [1, 2, 3, 4, 5]
    return {'menu': menu}

menu.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>menu</title>
</head>
<body>
    <br>
    {% for i in menu %}
        {{ i }}<br>
    {% endfor %}
</body>
</html>

views.py

from django.shortcuts import render
from django.views import View

# Create your views here.


class UtilHtml(View):
    def get(self, request):
        name = "HJ LOVES SSQ"
        return render(request, 'Util.html', locals())

util.html

{% load tags %}
{#导入tags#}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Util</title>
</head>
<body>
    {{ name|mycut:" " }}<br>
    {% curr_date "%Y-%m-%d" %}
    {% my_menu %}
</body>
</html>

urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from util import views

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^util/$', views.UtilHtml.as_view())
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值