zoukankan      html  css  js  c++  java
  • 模板之母版、继承、导入、自定义函数

    模板

    母版

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{% block titile %}{% endblock %}</title>
        <link rel="stylesheet" href="/static/commons.css">
        <style>
            .pg-header{
                height: 50px;
                background-color: gold;
                color: white;
            }
        </style>
        {% block css %}{% endblock %}
    </head>
    <body>
        <div class="pg-header">母版</div>
        {% block context %}{% endblock %}
        <script src="/static/jquery.js"></script>
        {% block js %}{% endblock %}
    </body>
    </html>
    

    继承

    extends

    书写顺序无要求,仅能继承一个母版

    {% extends 'master.html' %}
    
    {% block title %}母版使用{% endblock %}
    
    {% block context %}
        <span>用户名</span>
        <input type="text" name="user" placeholder="用户名" />
    {% endblock %}
    
    {% block js %}
        <script>
            alert('123');
        </script>
    {% endblock %}
    
    {% block css %}
        <style>
            body{
                background-color: blue;
            }
        </style>
    {% endblock %}
    

    导入

    include

    可导入多个

    {% block context %}
        <span>用户名</span>
        <input type="text" name="user" placeholder="用户名"/>
        {% include 'tag.html' %}
        {% include 'tag.html' %}
    {% endblock %}
    

    自定义函数

    • simple_tag

      • 优点:参数个数无限制,空格间隔,空格个数无限制
      • 缺点:不可作为模板if的条件
      1. app下创建templatetags目录

      2. 在templatetags目录下,创建任意py文件(文件名任意,例如spring.py)

      3. 在py文件中,创建template对象 register

      4. 在py文件中,装饰函数

         @register.simple_tag
         def my_define_func(a, b):
             return a + b
        
      5. settings中注册APP

      6. 在html文件,第一行添加 {% load spring %}

      7. 在html文件,body中写 {% 函数名 arg1 arg2 %}

      例如: app的templatetags目录下的spring.py

        	from django import template
        	from django.utils.safestring import mark_safe
        	
        	register = template.Library()
        	
        	
        	@register.simple_tag
        	def my_define_func(a, b):
        	    return a + b
      
        simple.html
        	
        	{% load spring %}
        	<!DOCTYPE html>
        	<html lang="en">
        	<head>
        	    <meta charset="UTF-8">
        	    <title></title>
        	</head>
        	<body>
        	    {{ name }}
        	    <br/>
        	    {{ name|lower }}
        	    <br/>
        	    {% my_define_func 5 2 %}
        	</body>
        	</html>
      
        urls.py
        	url(r'^simple$', views.simple),
      
        views.py
        	def simple(request):
        	    name = "Tom"
        	    return render(request, 'simple.html', {'name': name})
      
        settings.py
        	INSTALLED_APPS = [
        	    'django.contrib.admin',
        	    'django.contrib.auth',
        	    'django.contrib.contenttypes',
        	    'django.contrib.sessions',
        	    'django.contrib.messages',
        	    'django.contrib.staticfiles',
        	    'app01',
        	]
      
        若html使用继承
      
        	{% extends 'master.html' %}
        	{% load spring %}
        									
        	{% block context %}
        	    <span>用户名</span>
        	    <input type="text" name="user" placeholder="用户名" />
        	    {{ "PM"|my_filter:"LiLi" }}
        	{% endblock %}
      
    • filter

      • 缺点:最多传递2个参数,且不能加空格;若传递多个参数,可以将多个参数组成一个,当成参数2传递,在函数内处理
      • 优点:可以作为模板if的条件
      • 使用方法:
        • {{ 参数|函数名 }}
        • {{ 参数1|函数名:参数2 }}

      例如:

        html
        	{{ "PM"|my_filter:"LiLi" }}
      
        app的templatetags目录下的spring.py
        	@register.filter
        	def my_filter(a, b):
        	    return a + b
        
        其它与simple_tag一样
      
    • 自定义分页

      前端处理

        {{ page_str|safe }}
      
        page_str = """
            <a href="/page/?p=1">1</a>
            <a href="/page/?p=2">2</a>
            <a href="/page/?p=3">3</a>
        """
      

      后端处理

        {{ page_str }}
      
        from django.utils.safestring import mark_safe
      
        page_str = """
            <a href="/page/?p=1">1</a>
            <a href="/page/?p=2">2</a>
            <a href="/page/?p=3">3</a>
        """
        page_str = mark_safe(page_str)
      
  • 相关阅读:
    计算机视觉(ComputerVision, CV)相关领域的站点链接
    JS-网页中分页栏
    国内搜索大哥iOS面试题
    【iOS与EV3混合机器人编程系列之中的一个】iOS要干嘛?EV3能够更酷!
    Android多线程.断点续传下载
    【转】BeyondCompare软件使用
    【转】目前世界上最为流行的代码托管网站
    【转】为什么要用GIT而不是SVN
    【转】UBUNTU 下GIT的安装
    【转】雄鹰计划-卓越工程师炼成记
  • 原文地址:https://www.cnblogs.com/todayisafineday/p/8783667.html
Copyright © 2011-2022 走看看