Python 第五十八章 Django 模板系统

模板渲染

{{ 变量 }}  {% 逻辑 %}

万能的点

{{ name }}
{{ l1.1 }}
{{ l1.k1 }}
{{ l1.keys }}
{{ l1.values }}
{{ l1.items }}
{{ l1.p }}

过滤器

内置过滤器  |
{{ name|length }}
{{ name|cut:'xx' }}
default
filesizeformat
truncatchars
truncatwords
slice:'0:3'
join:'+'
date:'Y-m-d H:i:s'
safe  识别成标签

标签

{% for i in data %}
    xx
    {{ forloop.counter }}
{% empty %}
    xx
{% endfor %}


forloop.counter            当前循环的索引值(从1开始),forloop是循环器,通过点来使用功能
forloop.counter0           当前循环的索引值(从0开始)
forloop.revcounter         当前循环的倒序索引值(从1开始)
forloop.revcounter0        当前循环的倒序索引值(从0开始)
forloop.first              当前循环是不是第一次循环(布尔值)
forloop.last               当前循环是不是最后一次循环(布尔值)
forloop.parentloop         本层循环的外层循环的对象,再通过上面的几个属性来显示外层循环的计数等
{% if a > 1  %}
    
{% elif %}
    
{% else %}
    
{% endif %}
{% with a=xx.xx.xx %}
{% with xx.xx.xx as a %}
    {{ a }}
{% endwith %}

模板继承(母版继承)

1. 创建一个xx.html页面(作为母版,其他页面来继承它使用)
2. 在母版中定义block块(可以定义多个,整个页面任意位置)
    {% block content %}  <!-- 预留的钩子,共其他需要继承它的html,自定义自己的内容 -->

    {% endblock %}


3 其他页面继承写法
    {% extends 'base.html' %}  必须放在页面开头
4 页面中写和母版中名字相同的block块,从而来显示自定义的内容
    {% block content %}  <!-- 预留的钩子,共其他需要继承它的html,自定义自己的内容 -->
        {{ block.super }}  #这是显示继承的母版中的content这个快中的内容
        这是xx1
    {% endblock %}

views.py
# 这些是母版继承
# 创建4个文件 base(母版)+home+menu1+menu2+menu3
def home(request):
    return render(request,'home.html')

def menu1(request):
    return render(request,'menu1.html')

def menu2(request):
    return render(request,'menu2.html')

def menu3(request):
    return render(request,'menu3.html')

组件

1 创建html页面,里面写上自己封装的组件内容,xx.html
2 新的html页面使用这个组件
    {% include 'xx.html' %}

自定义标签和过滤器

1 在应用下创建一个叫做templatetags的文件夹(名称不能改),在里面创建一个py文件,例如xx.py

2 在xx.py文件中引用django提供的template类,写法
    from django import template
    register = template.Library() #register变量名称不能改
    
    定义过滤器
        @register.filter   参数至多两个
        def xx(v1,v2):
            return xxx
    使用:
        {% load xx %}
        {% name|xx:'oo' %}
    
    # 自定义标签 没有参数个数限制
    @register.simple_tag
    def huxtag(n1,n2):  #冯强xx  '牛欢喜'
        '''
        :param n1:  变量的值 管道前面的
        :param n2:  传的参数 管道后面的,如果不需要传参,就不要添加这个参数
        :return:
        '''
        return n1+n2

    # inclusion_tag 返回html片段的标签
    @register.inclusion_tag('result.html')
    def res(n1): #n1 : ['aa','bb','cc']

        return {'li':n1 }
    使用:
        {% res a %}
    

静态文件配置

1 项目目录下创建一个文件夹,例如名为jingtaiwenjianjia,将所有静态文件放到这个文件夹中
2 settings配置文件中进行下面的配置
    # 静态文件相关配置
    STATIC_URL = '/abc/'  #静态文件路径别名

    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'jingtaiwenjianjia'),
    ]

3 引入<link rel="stylesheet" href="/abc/css/index.css">

url别名和反向解析

写法
    url(r'^index2/', views.index,name='index'),
反向解析
    后端: from django.urls import reverse
         reverse('别名')  例如:reverse('index') -- /index2/
    html: {% url '别名' %} -- 例如:{% url 'index' %} -- /index2/

url命名空间

路由分发 include

1 在每个app下创建urls.py文件,写上自己app的路径
2 在项目目录下的urls.py文件中做一下路径分发,看下面内容
    from django.conf.urls import url,include
    from django.contrib import admin

    urlpatterns = [
        # url(r'^admin/', admin.site.urls),
        url(r'^app01/', include('app01.urls')),#app01/home/
        url(r'^app02/', include('app02.urls')),
    ]

命名空间namespace

from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^app01/', include('app01.urls',namespace='app01')),#app01/home/
    url(r'^app02/', include('app02.urls',namespace='app02')),
    
]


使用:
    后端:reverse('命名空间名称:别名') -- reverse('app01:home') 
    hmtl:{% url '命名空间名称:别名' %}  -- {% url 'app01:home' %}

转载于:https://www.cnblogs.com/zhangshan33/p/11595610.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python、MySQL和Django是一套常用的开发工具组合,用于开发系统和网站。Python是一种高级编程语言,具有简单易用、多功能和可扩展性等特点。MySQL是一种关系型数据库管理系统,可用于存储和管理系统中的数据。而Django是一个基于Python开发的强大的Web应用框架,它提供了许多开发所需的功能和工具。 使用这个开发工具组合可以轻松开发系统。首先,Python作为一种易读易写的语言,使得开发变得简单和高效。它提供了丰富的库和模块,可以快速实现各种功能,例如文件操作、数据处理和网络通信等。其次,MySQL作为一种强大的数据库,可以轻松存储和管理系统中的数据。它支持多个用户同时访问,并提供了强大的查询功能,使得对数据的操作变得简单和高效。最后,Django作为一个Web应用框架,提供了许多内置的功能和工具,例如URL路由、表单处理、认证和授权等。开发人员可以利用这些功能来快速构建系统的各个模块和功能。 使用Python、MySQL和Django进行系统开发具有许多优点。首先,它们都是开源的,可以免费使用和修改。其次,它们具有广泛的社区支持和强大的生态系统,可以轻松找到解决方案和扩展。此外,Python、MySQL和Django都具有良好的文档和教程,使得学习和开发变得更加容易。 总之,使用Python、MySQL和Django进行系统开发是一种简单高效的选择。它们提供了丰富的功能和工具,可以轻松构建各种系统和网站。无论是开发小规模的个人项目还是大型的商业应用,这个工具组合都能满足开发需求,并帮助开发人员快速高质量地完成工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值