45.Django模板

news2025/1/10 17:07:03

1.django模板配置

1.1 Django模板概述

作为一个Web框架,Django需要一种方便的方式来动态生成HTML。最常用的方法依赖于模板。模板包含所需HTML输出的静态部分以及描述如何插入动态内容的特殊语法。

​ 对模板引擎的一般支持和Django模板语言的实现都存在于 django.template 命名空间中

1.2 django默认模板

  1. 配置

​ 在settings中配置:

# 配置模板
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',# 使用默认的Django的模板
        'DIRS': [os.path.join(BASE_DIR, 'templates')]# 需要配置的模板路径
        ,
        'APP_DIRS': True, # 是否当主应用找不到查找子应用
        'OPTIONS': {# 上下文(全局变量)应用设置
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

笔记:

  • BACKEND:是实现Django模板后端API的模板引擎类的路径。内置是django.template.backends.django.DjangoTemplates和 django.template.backends.jinja2.Jinja2(使用这个需要额外安装jinja2库)
  • DIRS :按搜索顺序定义引擎应该查找模板源文件的目录列表
  • APP_DIRS:告诉引擎是否应该在已安装的应用程序中查找模板,每个后端为其模板应存储在的应用程序内的子目录定义一个常规名称。
  • OPTIONS:包含后端特定的设置

1.3 用法

  1. get_template

    该函数使用给定名称加载模板并返回一个 Template对象,找到第一个匹配的模板即返回

   template = get_template('story_detail.html')

Django将要查找的文件,依次为:

  • /home/html/example.com/story_detail.html('django’引擎)
  • /home/html/default/story_detail.html('django’引擎)
  • /home/html/jinja2/story_detail.html('jinja2’引擎)

示例:

  # 最常用的render
  from django.shortcuts import render
  
  def my_view(request):
      # View code here...
      return render(request, 'myapp/index.html', {
          'foo': 'bar',
      }, content_type='application/xhtml+xml')
  
  
  # 相当于基础的get_template:
  from django.http import HttpResponse
  from django.template import loader
  
  def my_view(request):
      # View code here...
      template = loader.get_template('myapp/index.html')
      context = {'foo': 'bar'}
      # 注意,这个 render 和 快捷键 render 不是一个对象
      return HttpResponse(template.render(context, request), content_type='application/xhtml+xml')
  
  1. select_template

    select_template() 用法类似 get_template() ,除了它需要一个模板名称的列表。它按顺序尝试每个名称并返回存在的第一个模板

    template = select_template(['story_253_detail.html','story_detail.html'])
    

    Django将要查找的文件,依次为:

    • /home/html/example.com/story_253_detail.html('django’引擎)
    • /home/html/default/story_253_detail.html('django’引擎)
    • /home/html/jinja2/story_253_detail.html('jinja2’引擎)
    • /home/html/example.com/story_detail.html('django’引擎)
    • /home/html/default/story_detail.html('django’引擎)
    • /home/html/jinja2/story_detail.html('jinja2’引擎)

2.Django模板渲染变量

Django模板只是一个文本文档或使用Django模板语言标记的Python字符串。一些结构被模板引擎识别和解释,主要的是变量( {{ 变量 }} )和标签( {% 标签 %} )。

2.1 django中模板渲染配置

其中也包含模板渲染变量的测试
首先创建一个主应用,子应用。在子应用中创建一个templates文件夹并在下面创建一个template_app文件夹,还有创建一个urls.py路由文件。
配置主应用中的settings

INSTALLED_APPS = [
    'template_app',
]

import os
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],

配置子应用的路由地址(主应用的urls中)

from django.contrib import admin
from django.urls import path
from django.urls.conf import include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('template_app/', include('template_app.urls'))
]

以上配置基本完成
开始测试模板渲染的变量
子应用url配置

from django.contrib import admin
from django.urls import path
from django.urls.conf import include
from . import views
urlpatterns = [
    path('var_test/', views.var_test)
]

子应用的views

from django.shortcuts import render

# Create your views here.
def var_test(request):
    # 传递变量给模板
    context_name = {
        "first_name":'tom',
        "last_name":"zhang"
    }
    return render(request, 'template_app/var_test.html', context_name) # 返回模板携带变量

模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    first_name:{{first_name}} <br>
    last_name: {{last_name}} <br>
</body>
</html>

3.django模板渲染实体_字典_列表

  1. 变量
    一个变量从上下文中输出一个值,这是一个类似字典的对象将键映射到值。
  2. 标签

创建数据模型

from django.db import models

# Create your models here.
class Person(models.Model):
    pname = models.CharField(max_length=30)
    age = models.IntegerField()
    password = models.CharField(max_length=8)
    sex = models.CharField(max_length=5)
    salary = models.FloatField()

配置数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'template_study',
        "HOST":'127.0.0.1',
        "USER": 'root',
        "PASSWORD": 'root',
        'PORT':3306 
    }
}

迁移数据库命令

python manage.py makemigrations template_app
python manage.py migrate template_app

views视图

from django.shortcuts import render
from template_app.models import *
# 在页面中渲染实体_字典_列表
def data_test(request,id):
    p = Person.objects.get(pk=id)
    person_list = Person.objects.all()
    address_dict = {
        'bj':'北京',
        'sh':'上海',
        'gz':'广州'
    }
    return render(request, 'template_app/data_test.html',{'person':p,'person_list':person_list, 'address_dict':address_dict})

template模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>在页面中渲染实体_字典_列表</title>
</head>
<body>
    <p>实体的渲染</p>
    <ul>
        <li>{{ person.pname }}</li>
        <li>{{ person.age }}</li>
        <li>{{ person.sex }}</li>
        <li>{{ person.salary }}</li>
    </ul>
    <p>列表的渲染</p>
    {{ person_list.0.pname }}
    {{ person_list.1.pname }}
    {{ person_list.2.pname }}
    {{ person_list.3.pname }}
    {{ person_list.4.pname }}
    <p>字典的渲染</p>
    {{ address_dict.bj }} <br>
    {{ address_dict.sh }} <br>
    {{ address_dict.gz }} <br>
</body>
</html>

url

from django.contrib import admin
from django.urls import path
from django.urls.conf import include
from . import views
urlpatterns = [
    path('data_test/<int:id>/', views.data_test)
]

4.标签csrf_token的使用

测试代码思路:我们创建一个views视图,然后返回一个模板,内容是form表单的输入账号密码。点击按钮只会,需要跳转到一个登录成功的新路由中。这时候,就需要我们使用csrf_token防跨域攻击
无参数标签 csrf_token ,这个标签是用于html进行 form 表单提交时,包含一个 随机变化的字符串,在html页面中,其实就是一个 inputtype=‘hidden’ 作用是用于防止跨域攻击
{% csrf_token %}

传参的标签 cycle , 参数 ‘odd’ ‘even’ ,空格间隔
标签本身也支持 关键字参数 {% 标签 key1=‘value’ key1=‘even’ %}
{% cycle ‘odd’ ‘even’ %}

代码展示
views

from django.shortcuts import render, HttpResponse
from template_app.models import *
def login_html(request):
    return render(request, "template_app/login.html")
    
def login(request):
    return HttpResponse("登录成功")

urls

from django.contrib import admin
from django.urls import path
from django.urls.conf import include
from . import views
urlpatterns = [
    path('login_html/',views.login_html),
    path('login/',views.login,name="login")
]

template模板—— csrf_token

<body>
    <form action="/template_app/login/" method="POST">
        {% csrf_token %}
        用户名: <input type="text" name="pname"> <br>
        密码: <input type="password" name="password"> <br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

5.标签

5.1 标签之for if firstof的使用

方法概述

  • firstof

输出不是False的第一个参数,所有参数都为False,则什么都不输出
for循环在循环中设置了许多变量:

变量描述
forloop.counter循环的当前迭代(1索引)
forloop.counter0循环的当前迭代(0索引)
forloop.revcounter循环结束时的迭代次数(1索引)
forloop.revcounter0循环结束时的迭代次数(0索引)
forloop.first如果这是通过循环的第一次,则为真
forloop.last如果这是通过循环的最后一次,则为真
forloop.parentloop对于嵌套循环,这是围绕当前循环的循环

views

def login_html(request):
    return render(request, "template_app/login.html")
    
def login(request):
    # 从form 表单中获取数据(POST)
    data_dict = request.POST
    pname = data_dict.get('pname')
    password = data_dict.get('password')
    # 根据用户名和密码查询人
    persons = Person.objects.filter(pname=pname, password=password)
    if persons:
        # 跳转到Person列表(重定向)
        return redirect('find_person')
    else:
        # 不通过验证,返回登录页面
        return render(request,'template_app/login.html')

def find_person(request):
    person_list = Person.objects.all()
    return render(request,'template_app/person_list.html',{'person_list':person_list})

urls

from django.contrib import admin
from django.urls import path
from django.urls.conf import include
from . import views
urlpatterns = [
    path('login_html/',views.login_html),
    path('login/',views.login,name="login"),
    path('find_person/',views.find_person, name="find_person")
]

templates

<body>
    <table>
        <tr>
            <td>序号</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>薪资</td>
            <td>薪资等级</td>
        </tr>
        <!-- 标签之for循环、if判断、empty(for循环中无数据)的使用 -->
        {% for person in person_list %}
        <tr class="{% cycle 'odd' 'even' %}">
            <td>{{ forloop.counter }}</td>
            <td>{{ person.pname }}</td>
            <td>{{ person.age }}</td>
            <td>{{ person.sex }}</td>
            <td>{{ person.salary }}</td>
            {% if person.salary >= 10000 %}
            <td>高新</td>
            {% elif person.salary >= 5000 %}
            <td>中薪</td>
            {% else %}
            <td>低薪</td>
            {% endif %}
        </tr>
        {% empty %}
        没有查询到数据
        {% endfor %}
    </table>
    ----------firstof{% firstof 0 2 3 %}-------
</body>
</html>

5.2 标签之url的使用

如何使用应用名? 如何在template中使用a标签跳转路由?如何跳转路由携带参数?
template:login

<body>
    <!-- <form action="/template_app/login/" method="POST"> 根据地址来跳转 -->
        <!-- 根据url标签,跳转路由(根据路由取得名称跳转) -->
    <form action="{% url 'template_name:login'%}" method="POST">
        {% csrf_token %}
        用户名: <input type="text" name="pname"> <br>
        密码: <input type="password" name="password"> <br>
        <input type="submit" value="登录">
    </form>
</body>

template:person_list

    ----------url测试标签(跳转的是视图)---------- <br>
    <a href="{% url 'template_name:url_test' 10 %}">url测试跳转视图</a>

urls

from django.contrib import admin
from django.urls import path
from django.urls.conf import include
from . import views
app_name = "template_name"
urlpatterns = [
    path('login_html/',views.login_html),
    path('login/',views.login,name="login"),
    path('find_person/',views.find_person, name="find_person"),
    path('url_test/<int:num>/', views.url_test, name="url_test")
]

views:

from django.shortcuts import render, HttpResponse, redirect
from template_app.models import *
def login_html(request):
    return render(request, "template_app/login.html")
    
def login(request):
    # 从form 表单中获取数据(POST)
    data_dict = request.POST
    pname = data_dict.get('pname')
    password = data_dict.get('password')
    # 根据用户名和密码查询人
    persons = Person.objects.filter(pname=pname, password=password)
    if persons:
        # 跳转到Person列表(重定向)
        return redirect('template_name:find_person')
    else:
        # 不通过验证,返回登录页面
        return render(request,'template_app/login.html')

def find_person(request):
    person_list = Person.objects.all()
    return render(request,'template_app/person_list.html',{'person_list':person_list})

def url_test(request,num):
    return HttpResponse(f"url测试标签成功!{num}")

5.3 标签widthratio、with的使用

widthratio:乘法和除法(具体使用方法笔记写在代码中)
with:简单的名称缓存复杂变量,当访问多次耗时的方法(例如操作数据库的方法):

<body>
    <table>
        <tr>
            <td>序号</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>薪资</td>
            <td>薪资等级</td>
            <td>年薪</td>
            <td>年薪调用方法</td>
            <td>width的使用</td>
        </tr>
        <!-- 标签之for循环、if判断、empty(for循环中无数据)的使用 -->
        {% for person in person_list %}
        <tr class="{% cycle 'odd' 'even' %}">
            <td>{{ forloop.counter }}</td>
            <td>{{ person.pname }}</td>
            <td>{{ person.age }}</td>
            <td>{{ person.sex }}</td>
            <td>{{ person.salary }}</td>
            {% if person.salary >= 10000 %}
            <td>高新</td>
            {% elif person.salary >= 5000 %}
            <td>中薪</td>
            {% else %}
            <td>低薪</td>
            {% endif %}            
            <!-- ----------widthratio-----------------------  -->
            <!-- widthratio乘除法:共3位数字,num1/num2*num3 -->
            <td>{% widthratio person.salary 1 12 %}</td>
            <td>{{ person.year_salary }}</td>
            <td>
                {% with new_age=person.age %}
                {{ new_age }}
                {% endwith %}
            </td>
        </tr>
        {% empty %}
        没有查询到数据
        {% endfor %}

模型model

from django.db import models

# Create your models here.
class Person(models.Model):
    pname = models.CharField(max_length=30)
    age = models.IntegerField()
    password = models.CharField(max_length=8)
    sex = models.CharField(max_length=5)
    salary = models.FloatField()

    def year_salary(self):
        return self.salary * 12

5.4 过滤器的使用

<body>
    -----------length(计算字符串长度)------------------ <br>
    msg:{{msg|length}} <br>
    {% if msg|length >= 10 %}
    msg的长度大于等于10 <br>
    {%endif%}
    -----------add(加法)--------------------- <br>
    num+10:{{num|add:"10"}} <br>
    -----------divisibleby(是否能整除于num)--------------------- <br>
    {{ num|divisibleby:"2" }} <br>
    -----------addslashes(单引号前加\)--------------------- <br>
    {{ value|addslashes }} <br>
    -----------capfirst(首字母大写)--------------------- <br>
    {{ msg|capfirst }} <br>
    -----------center(将值置于给定宽度的字段中)--------------------- <br>
    {{ msg|center:"50" }} <br>
    -----------cut(去掉对应的值)--------------------- <br>
    {{ value|cut:" " }} <br>
    -----------日期时间--------------------- <br>
    {{ birthday }}
    {{ value|date:"Y-m-d H:i:s" }}
</body>

5.5 include标签

主template

<body>
    <!-- 包含header.html -->
    <!-- 若视图和模板同时传递了参数,会显示模板中的数据 -->
    <!-- only: 若存在only视图未传递参数,不管模板是否存在,直接使用默认值 -->
    {% include "template_app/header.html" with name='测试是否会覆盖视图传递的数据' only %}
    <!-- 包含footer.html -->
    {% include "template_app/footer.html" %}
</body>

header

<body>
    <ul>
        <li>新闻</li>
        <li>娱乐</li>
        <li>热点</li>
        <li>{{name}}</li>
        <!-- 传递默认值 -->
        <li>{{age|default:18}}</li>
    </ul>
</body>

footer

<body>
    <p>关于百度About Baidu使用百度前必读帮助中心企业推广京公网安备11000002000001号京ICP证030173号信息网络传播视听节目许可证</p>
</body>

views

def include_test(request):
    return render(request, 'template_app/include_test.html',{"name":"关注",'age':30})

5.6 静态文件的使用

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
    <!-- 引入静态文件 -->
    {% load static %}
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入css -->
    <link rel="stylesheet" href="{% static 'template_app/css/mystyle.css' %}">
    <script type="text/javascript" src="{% static 'template_app/js/js_test.js' %}"></script>
</head>
<body>
    <p>静态文件测试</p>
    <p class="pstyle">显示图片</p>
    <img src="{% static 'template_app/imgs/1.jpg' %}">
    <button onclick="click_func()">点我</button>
</body>
</html>

6. 模板继承

Django模板引擎中最强大,也是最复杂的部分是模板继承。模板继承允许构建一个基本“骨架”模板,其中包含您网站的所有常见元素,并定义子模板可以覆盖的 blocks
​ 继承的技巧:

  • 如果在模板中使用,{% extends %}必须是该模板中的第一个模板标签。否则模板继承将不起作用。
  • 基本模板中的越多{% block %}标签越好。子模板不必定义所有父块,因此可以在多个块中填写合理的默认值
  • 如果发现自己在多个模板中复制了内容,则可能意味着您应该将该内容移至父模板的 {% block %}
  • 如果需要从父模板中获取块的内容,则使用 {{ block.super }}
    子模板
{% extends "template_app/base.html" %}
<!-- 模板继承,修改父模板的参数 -->
{% block title %}
extends_testhtml
{% endblock %}

{% load static %}
{% block css %}
<link rel="stylesheet" href="{% static 'template_app/css/mystyle.css' %}">
{%endblock%}

{% block js %}
<script type="text/javascript" src="{% static 'template_app/js/js_test.js' %}"></script>
{% endblock %}

{% block context %}
<p class="pstyle">样式测试</p>
<button onclick="click_func()">点击</button>
{% endblock %}

父模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}basehtml{% endblock %}</title>
    {% block css %}{%endblock%}
    {% block js %}{%endblock%}
</head>
<body>
    {% include "template_app/header.html" with name="模板继承base.html" %}
    {%block context%}{%endblock%}
    {% include "template_app/footer.html" %}
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下的NFS服务(包含windows10下的nfs搭建)

目录 1.NFS服务介绍 2.Linux下搭建NFS服务 &#xff08;1&#xff09;下载NFS服务端 &#xff08;2&#xff09;新建一个共享文件 &#xff08;3&#xff09;修改NFS服务配置文件 &#xff08;4&#xff09;重新启动NFS服务 &#xff08;5&#xff09;显示查看共享的文件…

38、常用类之String类

1、基本介绍&#xff1a; String s5new String(byte[] b)&#xff1b; &#xff08;5&#xff09;String实现了Serializable&#xff0c;说明String可以串行化&#xff0c;即可以网络传输 String实现了Comparable&#xff0c;说明String对象可以比较 &#xff08;6&#xff0…

JavaScript基础(13)_原型、原型对象

上一章构造函数确实简化了多个对象创建的麻烦问题&#xff0c;但是&#xff1a;构造函数每创建一个实例&#xff0c;构造函数就会执行一次&#xff0c;将属性和方法添加到该对象&#xff0c;每个对象实例化后地址互不相同&#xff0c;即使它们的方法所实现的逻辑和功能一样&…

pytorch初学笔记(八):神经网络之卷积操作

目录 一、卷积操作 二、二维卷积操作 2.1 torch.nn.functional 2.2 conv2d方法介绍 2.2.1 使用该方法需要引入的参数 2.2.2 常用参数 2.2.3 关于对input和weight的shape详解 三、代码实战 3.1 练习要求 3.2 tensor的reshape操作 3.3 不同stride的对比 3.4 不同pad…

Docker面试

1. Docker和虚拟机的区别&#xff1f; 虚拟机Virtual Machine与容器化技术&#xff08;代表Docker&#xff09;都是虚拟化技术&#xff0c;两者的区别在于虚拟化的程度不同。 隔离性 由于vm对操作系统也进行了虚拟化&#xff0c;隔离的更加彻底。而Docker共享宿主机的操作系统…

数字化转型总体需求

基于“两型三化九力”对企业数字化的要求&#xff0c;以建设产品全生命周期管理平台为手段和途径&#xff0c;打通设计、工艺、制造及交付服务的全生命周期的数字线&#xff0c;实现数字化设计、数字化仿真、数字化制造、数字化服务及数字化管理&#xff0c;未来以此为基础实现…

【计算机毕业设计】11.毕业生信息管理系统+vue

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 毕业生信息招聘平台&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个…

zk常用命令ls、ls2、get、stat,参数意思(重补早期学习记录)

前言:补学习记录,几年前写一半丢草稿箱,突然看到,有强迫症所以补完 1.连接zk客户端(进入zk后台) ./zkCli.sh 连接成功 使用help查看有哪些命令可以使用 试试ls和ls2的区别 ls显示指定路径下的目录 ls2不仅可以 显示指定路径下的目录,还可以显示该节点的相关状态信息…

OpenGL 单色

目录 一.OpenGL 单色图 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 单色 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >…

非关系型数据库MongoDB是什么/SpringBoot如何使用或整合MongoDB

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.4.3.3 Mongodb 3.4.3.3.1 介绍 MongoDB是一个开…

【Tomcat专题】Tomcat如何打破双亲委派机制?

文章目录类加载器双亲委派机制双亲委派的好处Tomcat的类加载器loadClass总体加载步骤&#xff1a;类加载器 三种JDK内部的类加载器 启动类加载器&#xff08;BootStrap ClassLoader&#xff09; 负责加载JRE\lib下的rt.jar、resources.jar、charsets.jar包中的class。 扩展…

一文带你搞懂sklearn.metrics混淆矩阵

一般的二分类任务需要的评价指标有4个 accuracyprecisionrecallf1-score 四个指标的计算公式如下 计算这些指标要涉及到下面这四个概念&#xff0c;而它们又构成了混淆矩阵 TP (True Positive)FP (False Positive)TN (True Negative)FN (False Negative) 混淆矩阵实际值01预测…

周杰伦腾格尔晚上八点同时开线上演唱会,究竟是巧合还是刻意安排

从日历上面看&#xff0c;2022年11月19日&#xff0c;是一个再平凡不过的日子&#xff0c;不过有了周杰伦和腾格尔的加持&#xff0c;这个平凡的日子也变得不平凡了。根据腾格尔老师本人透露&#xff0c;他准备在11月19日&#xff0c;在某音平台开启线上演唱会&#xff0c;为歌…

智慧实验室解决方案-最新全套文件

智慧实验室解决方案-最新全套文件一、建设背景二、建设架构智慧实验室建设核心目标三、建设方案四、获取 - 智慧实验室全套最新解决方案合集一、建设背景 当前高校和中小学的智慧校园建设正如火如荼地进行中&#xff0c;智慧实验室建设属于“智慧校园”建设的重要组成部分之一…

ctf_BUUCTF_web(1)

文章目录BUUCTF_webSQL注入1. [极客大挑战 2019]EasySQL2. [SUCTF 2019]EasySQL3.[强网杯 2019]随便注4.[极客大挑战 2019]BabySQL5.[BJDCTF2020]Easy MD56.[极客大挑战 2019]HardSQL7.[GXYCTF2019]BabySQli8.[GYCTF2020]Blacklist9.[CISCN2019 华北赛区 Day2 Web1]Hack World1…

面试:HTTP 的长连接和短连接

https://www.cloudflare.com/zh-cn/learning/ddos/syn-flood-ddos-attack/ 一文搞懂 HTTP 的长连接和短连接_文晓武的博客-CSDN博客 1、HTTP 协议与 TCP/IP 协议的关系 HTTP 的长连接和短连接本质上是 TCP 长连接和短连接。HTTP 属于应用层协议&#xff0c;在传输层使用 TCP…

区块链交易明细中各字段的含义

Transaction Hash&#xff1a;标识本次交易的 hashStatus&#xff1a;交易状态Block&#xff1a;7768188 表示本次块高&#xff0c;217034 表示在 7768188 后面又新挖的区块数量&#xff0c;该数值会随着新区块增加而不断增长Timestamp&#xff1a;交易成功的时间戳From&#x…

直流无刷电机(BLDC)转速闭环调速系统及Matlab/Simulink仿真分析

文章目录前言一、转速闭环直流调速系统二、Matlab/Simulink仿真2.1.仿真电路分析2.2.仿真结果分析总结前言 变压调速是直流调速系统的主要调速方法&#xff0c;因此系统的硬件至少包含&#xff1a;可调直流电源和直流电机两部分。可调直流电源多采用直流PWM变换器&#xff0c;…

v-for的用法及key值原理

v-for的用途&#xff1a; &#xff08;1&#xff09;关键字&#xff1a; v-for遍历的时候&#xff0c;关键字有两个&#xff1a;in、of&#xff1a;两个关键字没有区别&#xff0c;用哪一个都行&#xff1b; &#xff08;2&#xff09;支持对象、数组、数字遍历&#xff1a…

java线程生命周期

如图 java线程的生命周期主要分为 新建: :新建这一刻 他会创建出一个线程对象 这个就是我们通过new线程类 这部操作实现的 当我们通过new出来的线程对象 执行 start方法之后 他就会进入第二个生命周期 就绪: 在这个过程中 他有执行资格 就是他是可以执行线程的程序的 但这个阶…