Python2—0719笔记

8 template两大功能

9.1 simple_tag

9.2 模板继承


template两大功能

views.py

代码

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

veiws.py

代码

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

views.py

代码

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

转载于:https://my.oschina.net/u/3959701/blog/3076301

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值