1.需要在应用文件夹下创建templatetags文件夹,必须是这个名字。
2.templatetags文件夹创建一个xx.py文件,文件名随便起
3.创建自定义过滤器
from django import template
register = template.Library() #必须这个名字
#自定义过滤器
@register.filter
def oo(v1,v2):
s = v1 + v2
return s
html中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{
% load test %}
{
{
s1|oo }} #没有参数
{
{
s1|oo:'幸福的生活' }} #有参数
#参数最多两个
</body>
</html>
创建标签:
from django import template
register = template.Library()
# 自定义标签
@register.simple_tag
def mytag(v1,v2,v3):
s = v1 + 'test' + v2 + ' ' + v3
return s
html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{
% load test %}
<h1>
{
# {% mytag s1 %}#}
{
% mytag s1 '1' '2' %}
</h1>
</body>
</html>
创建inclusion_tag:
# inclusion_tag
@register.inclusion_tag('inclusiontag.html')
#将inclusiontag.html里面的内容用下面函数的返回值渲染,然后作为一个组件一样,加载到使用这个函数的html文件里面
def func():
return {
'data':[11,22,33]}
xx.html文件中(这个文件类似于一个组件):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{
% for d in data %} #循环打印func的值
<li>{
{
d }}</li>
{
% endfor %}
</ul>
</body>
</html>
oo.html文件中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{
% load test %}
{
% func %} #这里会加载xx.html里面的内容,功能和上篇问斩的的include类似
</body>
</html>
还可以传参:
1.后端代码:
def xxoo(request):
s1 = '张三和李四'
li = [11,22,33,44,55,66]
return render(request,'xxoo.html',{
's1':s1,'li':li})
前端代码:
xxoo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{
% load test %}
{
% func li %}
</body>
</html>
templatetags文件夹下xx.py
# inclusion_tag
@register.inclusion_tag('inclusiontag.html')
def func(v1):
return {
'data':v1}
xx.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{
% for d in data %}
<li>{
{
d }}</li>
{
% endfor %}
</ul>
</body>
</html>
流程:
后端将参数传给func函数v1,func返回的值给inclusiontag.html去渲染,xxoo.html执行func函数
需要在项目文件夹下创建一个静态文件夹(statics),名字随便起
settings.py文件中需要配置一下:
#静态路径 给下面的路径STATICFILES_DIRS起个别名
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'statics')
]
html文件中使用:
{
% load static %} #先加载
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static 'test.css' %}"> #标签的写法
</head>
<body>
<h1>你好</h1>
</body>
</html>
{% get_static_prefix %}:获取静态文件名
{% get_static_prefix as xx %}:起别名,下次用的时候直接用xx就行: