Django(4) - 模板标签

88 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情

创建Django项目步骤:

第一步:创建虚拟环境

第二步:安装django模块

第三步:创建一个存放项目的根目录文件夹,进入文件夹后,再使用django-admin创建django项目

第四步:进入到项目根目录后,直到看到manage.py这个文件,运行runserver命令

第五步:pycharm远程连接虚拟机:设置三个点

  1. 连接到python解释器
  2. 设置好Deployment里面的设置
  3. 设置好在pycharm里面的runserver

Django项目操作步骤

URLconf:urls.py:指明你的登陆路径

模板:redirect重定向,reverse(app_name:name)动态解析(如果要跳到别的app里需要app_name)

render(模板渲染),模板变量:{{ 变量名 }},模板过滤器:{{ 变量名|过滤器[:参数] }},模板标签:{{ % load static % }}

模板标签

一,常用标签

模板标签的作用:在模板中进行各种逻辑操作,比如循环,判断等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtngbZUN-1592066743861)(assets/1.png)]

模板标签基本语法:{% load static %},{% tag %}{% endtag %}

1,{% load static %}						 # 加载静态文件
2,{% for aaa in data %} {% endfor %}	  # 使用for循环
3,{{ forloop.counter }}					# 实现生成器的效果
3,{% url 'student:detail' aaa.name %}	  # 跳转到根目录student App里的视图
4, 	{% if 条件一 %}
	{% elif 条件二 %}
    {% else %}
   	{% endif %}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMAALXNp-1592066743871)(assets/2.png)]

二,模板的引用(include)

{% include 'student/ad.html' %}		# 广告,所有网页共同的部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Obc1FyT-1592066743875)(assets/3.png)]

三,模板的继承

继承:extends

作用: 将模板中共同的部分抽离出来,独立作为一个部分

{% extends 'student/base.html' %}	# 要放在html最前面,导入的继承的部分

​ 但是此时页面上只有继承过来的base.html这个网页的效果,原来的网页内容不见了?

扩展:block(公共部分挖坑,通过继承之后填坑)

{% block 名称 %}内容{% endblock %}

在这里插入图片描述 在这里插入图片描述

继承的好处:可以把所有页面的公共部分抽离出来,作为一个独立的部分,然后在公共的部分通过block挖坑(相当于写一个占位),然后在功能页面通过继承extend把base页面继承过来,然后再同过block把之前的坑填了(相当于在占位里面加上内容),减少代码量,只需要填坑就行了

四,自定义过滤器

本质:就是一个python函数,有一个或者两个参数

  • 第一个参数是传进来的模板变量,不一定是字符串
  • 第二个参数是一个普通参数,可以是默认参数,也可以不要这个参数

前提:设置数据时,0代表女,1代表男

​ 展示数据时,页面显示为中文或者英文

解决方法:自定义过滤器

步骤

  1. 常用设置:在student App下创建一个templatetags的python包

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'student'
    ]		# 创建之前必须确认该setting下的配置是否有App名
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BvWpwnAr-1592066743881)(assets/6.png)]

  2. 设置 自定义过滤器函数

    def to_sex(values, arg='zh'):    # values 0,1
        change ={
            'zh': ('女', '男'),
            'en': ('Female', 'Male')
        }
        return change[arg][values]
    
  3. 注册(注册之后必须重新启动Django!!!!!)

    from django import template
    register = template.Library()
    
    def to_sex(values, arg='zh'):    # values 0,1
        change ={
            'zh': ('女', '男'),
            'en': ('Female', 'Male')
        }
        return change[arg][values]
    
    register.filter('to_sex', to_sex)   # 参数一:自定义过滤器名字, 二:函数名
    register.filter(to_sex)	# 函数名,用函数名做过滤器
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkFoSfii-1592066743883)(assets/7.png)]

  4. 导入{% load customer_filers %}[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n6vD016r-1592066743885)(assets/8.png)]

    传入参数(传给第二个参数)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XhiUaxTw-1592066743887)(assets/9.png)]