8 template两大功能
9.1 simple_tag
9.2 模板继承
template两大功能
代码
from django.shortcuts import render,HttpResponse,redirect
from demo import models
\# Create your views here.
def login(request):
if request.method=='GET':
a=\[1,\]
obj_li=models.UserInfo.objects.all()
for obj in obj_li:
print('username--->',obj.username)
print('password--->',obj.password)
return render(request,'login.html',locals())
#return HttpResponse('hello demo')
login.html
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
</head>
<body>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username }}</span>
<span>{{ item.password }}</span>
{% endif %}
</div>
{% endfor %}
</body>
</html>
运行
访问127.0.0.1:8000/login
创建static 目录
复制jquery
settings.py添加代码
\# Static files (CSS, JavaScript, Images)
\# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'demo/static/'),
)
login.html
代码
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
{# <script src="{% static 'jquery-3.4.1.js' %}"></script> #}
</head>
<body>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username }}</span>
<span>{{ item.password }}</span>
{% endif %}
</div>
{% endfor %}
</body>
</html>
<script>
$('#test')
</script>
{# #} 注释
运行
访问
127.0.0.1:8000/login
去掉注释
代码
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
</head>
<body>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username }}</span>
<span>{{ item.password }}</span>
{% endif %}
</div>
{% endfor %}
</body>
</html>
<script>
$('#test')
</script>
运行
访问127.0.0.1:8000/login
无报错
导入js成功
默认方法
用“|” 表示
login.html
代码
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
</head>
<body>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username |upper}}</span>
<span>{{ item.password |add:3}}</span>
{% endif %}
</div>
{% endfor %}
</body>
</html>
<script>
$('#test')
</script>
<span>{{ item.username |upper}}</span> 前面的字符串变大写
<span>{{ item.password |add:3}}</span> 数字加3
访问127.0.0.1:8000/login
代码
from django.shortcuts import render,HttpResponse,redirect
from demo import models
\# Create your views here.
def login(request):
if request.method=='GET':
a=\[1,\]
obj_li=models.UserInfo.objects.all()
test= 'te st'
for obj in obj_li:
print('username--->',obj.username)
print('password--->',obj.password)
return render(request,'login.html',locals())
#return HttpResponse('hello demo')
login.html
代码
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
</head>
<body>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username |upper}}</span>
<span>{{ item.password |add:3}}</span>
{% endif %}
</div>
{% endfor %}
{{ test }}
{{ test|cut:' ' }}
</body>
</html>
<script>
$('#test')
</script>
{{test|cut:' '}} 切片
访问127.0.0.1:8000/login
代码
from django.shortcuts import render,HttpResponse,redirect
from demo import models
import datetime
\# Create your views here.
def login(request):
if request.method=='GET':
a=\[1,\]
obj_li=models.UserInfo.objects.all()
test= 'te st'
d=datetime.datetime.now()
for obj in obj_li:
print('username--->',obj.username)
print('password--->',obj.password)
return render(request,'login.html',locals())
#return HttpResponse('hello demo')
login.html
代码
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
</head>
<body>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username |upper}}</span>
<span>{{ item.password |add:3}}</span>
{% endif %}
</div>
{% endfor %}
{{ test }}
{{ test|cut:' ' }}
{{ d }}
</br>
{{ d|date:'Y-m-d' }}
</body>
</html>
<script>
$('#test')
</script>
{{ d|date:'Y-m-d' }} 更改日期格式
访问127.0.0.1:8000/login
simple_tag
需求:通过自己写的访问渲染输出显示
demo下创建templatetags 包
templatetags下创建my_tag文件
my_tag.py
代码
from django.template import Library
register=Library()
@register.filter
def filter_func(x,y,):
return x+y
@register.simple_tag
def simple_func(t,a,b,c):
return '2019-7-19'
对象必须是register
settings.py中添加代码
\# Application definition
INSTALLED_APPS = \[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'demo.apps.DemoConfig',
\]
login.html
代码
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
</head>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username |upper}}</span>
<span>{{ item.password |add:3}}</span>
{% endif %}
</div>
{% endfor %}
{{ test }}
{{ test|cut:' ' }}
{{ d }}
</br>
{{ d|date:'Y-m-d' }}
</br>
{% load my_tag %}
{{ test|filter_func:'666' }}
</body>
</html>
<script>
$('#test')
</script>
运行
访问127.0.0.1:8000/login
login.html
代码
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
</head>
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username |upper}}</span>
<span>{{ item.password |add:3}}</span>
{% endif %}
</div>
{% endfor %}
{{ test }}
{{ test|cut:' ' }}
{{ d }}
</br>
{{ d|date:'Y-m-d' }}
</br>
{% load my_tag %}
<p>{{ test|filter_func:'666' }}</p>
{% simple_func 'a' 'b' 'c' 'd' %}
</body>
</html>
<script>
$('#test')
</script>
访问127.0.0.1:8000/login
模板继承
继承导航菜单
定义一个母页面让子页面继承
在template下创建base.html
base.html
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo01</title>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
</head>
<body>
<h1>我是顶部菜单</h1>
<div>
{% block content %}
{% endblock %}
</div>
</body>
</html>
login作为子页面
login.html
代码
{% extends "base.html" %}
<h1>{{ a.0 }}</h1>
{% for item in obj_li %}
<div>
{% if item.username == 'test' %}
<span>{{ item.username |upper}}</span>
<span>{{ item.password |add:3}}</span>
{% endif %}
</div>
{% endfor %}
{{ test }}
{{ test|cut:' ' }}
{{ d }}
</br>
{{ d|date:'Y-m-d' }}
</br>
{% load my_tag %}
<p>{{ test|filter_func:'666' }}</p>
{% simple_func 'a' 'b' 'c' 'd' %}
</body>
</html>
{% extends "base.html" %} 导入base.html
访问127.0.0.1:8000/login