Django模版语言

本文将介绍Django模版系统的语法。如果您需要更多该系统如何工作的技术细节,以及希望扩展它,请浏览 The Django template language: for Python programmers.

Django模版语言的设计致力于在性能和简单上取得平衡。
它的设计使习惯于使用HTML的人也能够自如应对。如果您有过使用其他模版语言的经验,像是 Smarty 或者 Jinja2, 那么您将对Django的模版语言感到一见如故。

理念

如果您有过编程背景,或者您使用过一些在HTML中直接混入程序代码的语言,那么现在您需要记住,Django的模版系统并不是简单的将Python嵌入到HTML中。
设计决定了:模版系统致力于表达外观,而不是程序逻辑。

Django的模版系统提供了和一些程序结构功能类似的标签——用于布尔判断的 if 标签, 用于循环的 for 标签等等。——但是这些都不是简单的作为Python代码那样来执行的,并且,模版系统也不会随意执行Python表达式。只有下面列表中的标签、过滤器和语法才是默认就被支持的。 (但是您也可以根据需要添加 _ 您自己的扩展 _  到模版语言中)。

模版

模版是纯文本文件。它可以产生任何基于文本的的格式(HTML,XML,CSV等等)。

模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签

下面是一个小模版,它说明了一些基本的元素。后面的文档中会解释每个元素。

{% extends "base_generic.html" %}{% block title %}{{ section.title }}{% endblock %}{% block content %}
<h1>{{ section.title }}</h1>{% for story in story_list %}
<h2><a href="{{ story.get_absolute_url }}">{{ story.headline|upper }}</a>
</h2>
<p>{{ story.tease|truncatewords:"100" }}</p>
{% endfor %}
{% endblock %}

理念

为什么要使用基于文本的模版,而不是基于XML的(比如Zope的TAL)呢?我们希望Django的模版语言可以用在更多的地方,而不仅仅是XML/HTML模版。在线上世界,我们在email、Javascript和CSV中使用它。你可以在任何基于文本的格式中使用这个模版语言。

还有,让人类编辑HTML简直是施虐狂的做法!

变量

变量看起来就像是这样: {{ variable }}. 当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身。变量的命名包括任何字母数字以及下划线 ("_")的组合。点(".") 也在会变量部分中出现,不过它有特殊的含义,我们将在后面说明。重要的是, 你不能在变量名称中使用空格和标点符号。

使用点 (.) 来访问变量的属性。

幕后

从技术上来说,当模版系统遇到点,它将以这样的顺序查询:

  • 字典查询(Dictionary lookup)
  • 属性或方法查询(Attribute or method lookup)
  • 数字索引查询(Numeric index lookup)

如果计算结果的值是可调用的,它将被无参数的调用。调用的结果将成为模版的值。

这个查询顺序,会在优先于字典查询的对象上造成意想不到的行为。例如,思考下面的代码片段,它尝试循环 collections.defaultdict:

{% for k, v in defaultdict.iteritems %}Do something with k and v here...
{% endfor %}

因为字典查询首先发生,行为奏效了并且提供了一个默认值,而不是使用我们期望的 .iteritems() 方法。在这种情况下,考虑首先转换成字典。

在前文的例子中, {{ section.title }}将被替换为  section 对象的 title 属性。

如果你使用的变量不存在, 模版系统将插入 string_if_invalid 选项的值, 它被默认设置为'' (空字符串) 。

注意模版表达式中的“bar”, 比如 {{ foo.bar }} 将被逐字直译为一个字符串,而不是使用变量“bar”的值,如果这样一个变量在模版上下文中存在的话。

过滤器

您可以通过使用 过滤器来改变变量的显示。

过滤器看起来是这样的:{{ name|lower }}。这将在变量 {{ name }} 被过滤器 lower 过滤后再显示它的值,该过滤器将文本转换成小写。使用管道符号 (|)来应用过滤器。

过滤器能够被“串联”。一个过滤器的输出将被应用到下一个。{{ text|escape|linebreaks }} 就是一个常用的过滤器链,它编码文本内容,然后把行打破转成<p> 标签。

一些过滤器带有参数。过滤器的参数看起来像是这样: {{ bio|truncatewords:30 }}。这将显示 bio 变量的前30个词。

过滤器参数包含空格的话,必须被引号包起来;例如,连接一个有逗号和空格的列表,你需要使用 {{ list|join:", " }}

Django提供了大约六十个内置的模版过滤器。你可以在 内置过滤器参考手册中阅读全部关于它们的信息。为了体验一下它们的作用,这里有一些常用的模版过滤器:

default

如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:

{{ value|default:"nothing" }}

如果 value没有被提供,或者为空, 上面的例子将显示“nothing”。

length

返回值的长度。它对字符串和列表都起作用。例如:

{{ value|length }}

如果 value['a', 'b', 'c', 'd'],那么输出是 4

filesizeformat

将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:

{{ value|filesizeformat }}

如果 value 是 123456789,输出将会是 117.7 MB

再说一下,这仅仅是一些例子;查看 内置过滤器参考手册 来获取完整的列表。

您也可以创建自己的自定义模版过滤器;参考 自定义模版标签和过滤器

更多

Django’s admin interface can include a complete reference of all template tags and filters available for a given site. See The Django admin documentation generator.

标签

标签看起来像是这样的: {% tag %}。标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。

一些标签需要开始和结束标签 (例如{% tag %} ...标签 内容 … {% endtag %})。

Django自带了大约24个内置的模版标签。你可以在 内置标签参考手册中阅读全部关于它们的内容。为了体验一下它们的作用,这里有一些常用的标签:

for

循环数组中的每个元素。例如,显示 athlete_list中提供的运动员列表:

<ul>
{% for athlete in athlete_list %}<li>{{ athlete.name }}</li>
{% endfor %}
</ul>

if, elif, and else

计算一个变量,并且当变量是“true”是,显示块中的内容:

{% if athlete_list %}Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}Athletes should be out of the locker room soon!
{% else %}No athletes.
{% endif %}

在上面的例子中,如果 athlete_list 不是空的,运动员的数量将显示为 {{ athlete_list|length }} 的输出。另一方面, 如果 athlete_in_locker_room_list 不为空, 将显示 “Athletes should be out…” 这个消息。如果两个列表都是空的,将显示 “No athletes.” 。

您也可以在if 标签中使用过滤器和多种运算符:

{% if athlete_list|length > 1 %}Team: {% for athlete in athlete_list %} ... {% endfor %}
{% else %}Athlete: {{ athlete_list.0.name }}
{% endif %}

当上面的例子工作时,需要注意,大多数模版过滤器返回字符串,所以使用过滤器做数学的比较通常都不会像您期望的那样工作。length 是一个例外。

block and extends

Set up template inheritance (see below), a powerful way
of cutting down on “boilerplate” in templates.

再说一下,上面的仅仅是整个列表的一部分;查看 内置标签参考手册 来获取完整的列表。

您也可以创建您自己的自定义模版标签;参考 自定义模版标签和过滤器

更多

Django’s admin interface can include a complete reference of all template tags and filters available for a given site. See The Django admin documentation generator.

注释

要注释模版中一行的部分内容,使用注释语法 {# #}.

例如,这个模版将被渲染为 'hello'

{# greeting #}hello

注释可以包含任何模版代码,有效的或者无效的都可以。例如:

{# {% if foo %}bar{% else %} #}

这个语法只能被用于单行注释 (在 {##} 分隔符中,不允许有新行)。如果你需要注释掉模版中的多行内容,请查看 comment 标签。

模版继承

Django模版引擎中最强大也是最复杂的部分就是模版继承了。模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks

通过从下面这个例子开始,可以容易的理解模版继承:

<!DOCTYPE html>
<html lang="en">
<head><link rel="stylesheet" href="style.css" /><title>{% block title %}My amazing site{%/span> endblock %}</title>
</head><body><div id="sidebar">{% block sidebar %}<ul><li><a href="/">Home</a></li><li><a href="/blog/">Blog</a></li></ul>{% endblock %}</div><div id="content">{% block content %}{% endblock %}</div>
</body>
</html>

这个模版,我们把它叫作 base.html, 它定义了一个可以用于两列排版页面的简单HTML骨架。“子模版”的工作是用它们的内容填充空的blocks。

在这个例子中, block 标签定义了三个可以被子模版内容填充的block。 block 告诉模版引擎: 子模版可能会覆盖掉模版中的这些位置。

子模版可能看起来是这样的:

{% extends "base.html" %}/span>{% block title %}My amazing blog{% endblock %}{% block content %}
{% for entry in blog_entries %}<h2>{{ entry.title }}</h2><p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}

extends 标签是这里的关键。它告诉模版引擎,这个模版“继承”了另一个模版。当模版系统处理这个模版时,首先,它将定位父模版——在此例中,就是“base.html”。

那时,模版引擎将注意到 base.html 中的三个 block 标签,并用子模版中的内容来替换这些block。根据 blog_entries 的值,输出可能看起来是这样的:

<!DOCTYPE html>
<html lang="en">
<head><link rel="stylesheet" href="style.css" /><title>My amazing blog</title>
</head><body><div id="sidebar"><ul><li><a href="/">Home</a></li><li><a href="/blog/">Blog</a></li></ul></div><div id="content"><h2>Entry one</h2><p>This is my first entry.</p><h2>Entry two</h2><p>This is my second entry.</p></div>
</body>
</html>

请注意,子模版并没有定义 sidebar block,所以系统使用了父模版中的值。父模版的 {% block %} 标签中的内容总是被用作备选内容(fallback)。

您可以根据需要使用多级继承。使用继承的一个常用方式是类似下面的三级结构:

  • 创建一个 base.html 模版来控制您整个站点的主要视觉和体验。
  • 为您的站点的每一个“部分”创建一个base_SECTIONNAME.html 模版。 例如, base_news.html, base_sports.html。这些模版都继承自 base.html ,并且包含了每部分特有的样式和设计。
  • 为每一种页面类型创建独立的模版,例如新闻内容或者博客文章。这些模版继承了有关的部分模版(section template)。

这种方式使代码得到最大程度的复用,并且使得添加内容到共享的内容区域更加简单,例如,部分范围内的导航。

这里是使用继承的一些提示:

  • 如果你在模版中使用 {% extends %} 标签,它必须是模版中的第一个标签。其他的任何情况下,模版继承都将无法工作。

  • 在base模版中设置越多的 {% block %} 标签越好。请记住,子模版不必定义全部父模版中的blocks,所以,你可以在大多数blocks中填充合理的默认内容,然后,只定义你需要的那一个。多一点钩子总比少一点好。

  • 如果你发现你自己在大量的模版中复制内容,那可能意味着你应该把内容移动到父模版中的一个 {% block %} 中。

  • If you need to get the content of the block from the parent template, the {{ block.super }} variable will do the trick. This is useful if you want to add to the contents of a parent block instead of completely overriding it. Data inserted using {{ block.super }} will not be automatically escaped (see the next section), since it was already escaped, if necessary, in the parent template.

  • 为了更好的可读性,你也可以给你的 {% endblock %} 标签一个 名字 。例如:

    {% block content %}
    ...
    {% endblock content %}
    

    在大型模版中,这个方法帮你清楚的看到哪一个  {% block %} 标签被关闭了。

最后,请注意您并不能在一个模版中定义多个相同名字的 block 标签。这个限制的存在是因为block标签的作用是“双向”的。这个意思是,block标签不仅提供了一个坑去填,它还在 父模版中定义了填坑的内容。如果在一个模版中有两个名字一样的 block 标签,模版的父模版将不知道使用哪个block的内容。

自动HTML转义

当从模版中生成HTML时,总会有这样一个风险:值可能会包含影响HTML最终呈现的字符。例如,思考这个模版片段:

Hello, {{ name }}

首先,它看起来像是一个无害的方式来显示用户的名字,但是设想一下,如果用户像下面这样输入他的名字,会发生什么:

<script>alert('hello')</script>

使用这个名字值,模版将会被渲染成这样:

Hello, <script>alert('hello')</script>

…这意味着,浏览器将会弹出一个Javascript警示框!

类似的,如果名字包含一个 '<' 符号(比如下面这样),会发生什么呢?

<b>username

这将会导致模版呗渲染成这样:

Hello, <b>username

…进而这将导致网页的剩余部分都被加粗!

显然,用户提交的数据都被应该被盲目的信任,并且被直接插入到你的网页中,因为一个怀有恶意的用户可能会使用这样的漏洞来做一些可能的坏事。这种类型的安全问题被叫做 跨站脚本(Cross Site Scripting) (XSS) 攻击。

为避免这个问题,你有两个选择:

  • 第一, 你可以确保每一个不被信任的值都通过 escape 过滤器(下面的文档中将提到)运行,它将把潜在的有害HTML字符转换成无害的。This was the default solution in Django for its first few years, but the problem is that it puts the onus on you, the developer / template author, to ensure you’re escaping everything. It’s easy to forget to escape data.
  • 第二,你可以利用Django的自动HTML转义。 本节描述其余部分描述的是自动转义是如何工作的

By default in Django, every template automatically escapes the output of every variable tag. Specifically, these five characters are escaped:

  • <会转换为<
  • >会转换为>
  • ' (单引号) 会转换为&#39;
  • " (双引号)会转换为 "
  • & 会转换为 &amp;

我们要再次强调这是默认行为。如果你使用Django的模板系统,会处于保护之下。

如果关闭它

如果你不希望数据自动转义,在站点、模板或者变量级别,你可以使用几种方法来关闭它。

然而你为什么想要关闭它呢?由于有时,模板变量含有一些你打算渲染成原始HTML的数据,你并不想转义这些内容。例如,你可能会在数据库中储存一些HTML代码,并且直接在模板中嵌入它们。或者,你可能使用Django的模板系统来生成_不是_HTML的文本 – 比如邮件信息。

用于独立变量

使用safe过滤器来关闭独立变量上的自动转移:

This will be escaped: {{ data }}
This will not be escaped: {{ data|safe }}

safesafe from further escaping或者can be safely interpreted as HTML的缩写。
在这个例子中,如果data含有'<b>',输出会是:

This will be escaped: <b>
This will not be escaped: <b>

用于模板代码块

要控制模板上的自动转移,将模板(或者模板中的特定区域)包裹在autoescape标签 中,像这样:

{% autoescape off %}Hello {{ name }}
{% endautoescape %}

autoescape标签接受on 或者 off作为它的参数。有时你可能想在自动转移关闭的情况下强制使用它。下面是一个模板的示例:

Auto-escaping is on by default. Hello {{ name }}{% autoescape off %}This will not be auto-escaped: {{ data }}.Nor this: {{ other_data }}{% autoescape on %}Auto-escaping applies again: {{ name }}{% endautoescape %}
{% endautoescape %}

自动转移标签作用于扩展了当前模板的模板,以及通过 include 标签包含的模板,就像所有block标签那样。例如:

base.html

{% autoescape off %}
<h1>{% block title %}{% endblock %}</h1>
{% block content %}
{% endblock %}
{% endautoescape %}

child.html

{% extends "base.html" %}
{% block title %}This &amp; that{% endblock %}
{% block content %}{{ greeting }}{% endblock %}

由于自动转义标签在base模板中关闭,它也会在child模板中关闭,导致当 greeting变量含有<b>Hello!</b>字符串时,会渲染HTML。

<h1>This &amp; that</h1>
<b>Hello!</b>

注释

通常,模板的作用并不非常担心自动转义。Python一边的开发者(编写视图和自定义过滤器的人)需要考虑数据不应被转移的情况,以及合理地标记数据,让这些东西在模板中正常工作。

如果你创建了一个模板,它可能用于你不确定自动转移是否开启的环境,那么应该向任何需要转移的变量添加 escape过滤器。当自动转移打开时,escape过滤器双重过滤数据没有任何危险 – escape过滤器并不影响自动转义的变量。

字符串字面值和自动转义

像我们之前提到的那样,过滤器参数可以是字符串:

{{ data|default:"This is a string literal." }}

所有字面值字符串在插入模板时都 不会带有任何自动转义 – 它们的行为类似于通过 safe过滤器传递。背后的原因是,模板作者可以控制字符串字面值得内容,所以它们可以确保在模板编写时文本经过正确转义。

也即是说你可以编写

{{ data|default:"3 < 2" }}

…而不是:

{{ data|default:"3 < 2" }}  {# Bad! Don't do this. #}

这并不影响来源于模板自身的数据。模板内容在必要时仍然会自动转移,因为它们不受模板作者的控制。

访问方法调用

大多数对象上的方法调用同样可用于模板中。这意味着模板必须拥有对除了类属性(像是字段名称)和从视图中传入的变量之外的访问。例如,Django ORM提供了“entry_set” 语法用于查找关联到外键的对象集合。所以,提供一个模型叫做“comment”,并带有一个关联到 “task” 模型的外键,你就可以遍历给定任务附带的所有评论,像这样:

{% for comment in task.comment_set.all %}{{ comment }}
{% endfor %}

与之类似,QuerySets提供了 count()方法来计算含有对象的总数。因此,你可以像这样获取所有关于当前任务的评论总数:

{{ task.comment_set.all.count }}

当然,你可以轻易访问已经显式定义在你自己模型上的方法:

models.py

class Task(models.Model):def foo(self):return "bar"

template.html

{{ task.foo }}

由于Django有意限制了模板语言中逻辑处理的总数,不能够在模板中传递参数来调用方法。数据应该在视图中处理,然后传递给模板用于展示。

自定义标签和过滤器库

特定的应用提供自定义的标签和过滤器库。要在模板中访问它们,确保应用在INSTALLED_APPS之内(在这个例子中我们添加了'django.contrib.humanize'),之后在模板中使用load标签:

{% load humanize %}{{ 45000|intcomma }}

上面的例子中, load标签加载了humanize标签库,之后我们可以使用intcomma过滤器。如果你开启了django.contrib.admindocs,你可以查询admin站点中的文档部分,来寻找你的安装中的自定义库列表。

load标签可以接受多个库名称,由空格分隔。例如:

{% load humanize i18n %}

关于编写你自己的自定义模板库,详见自定义模板标签和过滤器

自定义库和模板继承

当你加载一个自定义标签或过滤器库时,标签或过滤器只在当前模板中有效 – 并不是带有模板继承关系的任何父模板或者子模版中都有效。

例如,如果一个模板foo.html带有{% load humanize %},子模版(例如,带有{% extends "foo.html" %})中不能 访问humanize模板标签和过滤器。子模版需要添加自己的 {% load humanize %}

这个特性是可维护性和逻辑性的缘故。

另见

The Templates Reference

Covers built-in tags, built-in filters, using an alternative template,
language, and more.

译者:Django 文档协作翻译小组,原文:Language overview。

本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。

Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 括号匹配(二) 区间DP

    括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB难度:6描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。 如: []是匹配的 ([])[]是匹配的 ((]是不匹配的 ([…...

    2024/4/12 6:01:39
  2. 小甲鱼Python3学习笔记之第十六讲(仅记录学习)

    第十六讲:序列!序列!一、知识点:0.根据列表、元组、字符串的共同点把它们统称为序列。A、都可以通过索引得到每一个元素;B、默认索引值都是从零开始(支持负数索引);C、都可以都过分片(切片)的方式得到新的字符串;D、都有相同的操作符(重复操作符、拼接操作符、成员…...

    2024/5/9 4:38:47
  3. 2.2、Android Studio通过注解提升代码检测

    使用像Lint这样的代码检测工具可以帮助你发现问题和提升代码,但是代码检测在有些地方很难应用。例如,Android的资源ID,使用一个int类型来表示字符、图像、颜色或者其他资源类型所以代码检测工具不能分辨这是一个字符串资源,还是一个颜色资源。这种情况下,即使你使用代码检…...

    2024/4/12 6:01:51
  4. 有关ajaxpro中的AjaxMethod

    这是个后台的方法:[AjaxPro.AjaxMethod]public string Fun(string str) {return str;}‘[AjaxPro.AjaxMethod]’这句是关键,函数或方法写法没什么特别的地方,只是要使用这句声明这个函数是由AJAX.NET在页面异步请求的,总之记住要通过AJAX获得数据的后台函数就使用[AjaxPro.…...

    2024/5/8 12:26:54
  5. 闲谈

    很久没有更新过博客了,因为这个月一直在准备本来应该结束的考试,但也因为疫情再次推迟,这看来是再次给了考生更多的时间来准备,但是因为前面的紧张已经被这突然增加的空闲天数冲散,只有无尽的焦躁,然而我也因为这几天闲了下了,早已没有了考前的紧张。本来是想要考试和计…...

    2024/5/8 22:49:24
  6. (C语言)栈在括号匹配问题中的应用

    //栈在括号匹配问题中的应用,假设表达式中允许存在三种括号:方括号和圆括号和花括号,其嵌套顺序任意,即([](){})或[{([][])}]等均为正确格式,[(])或([))或(()]均为不正确格式 #include<stdio.h> #define MaxSize 50typedef struct Stack_arr {char data[MaxSize];in…...

    2024/5/9 4:38:27
  7. SharePoint 2013 入门教程之入门手册

    当我们搭建完环境,创建应用程序和网站集后,就已经正式开启了我们的SharePoint之旅了,进入网站以后,开始基本的使用、设置,了解SharePoint相关特性,下面,来简单了解下SharePoint吧。 1、 创建网站集完毕,打开首页,如图1:(图1 SharePoint 发布站点首页) 如上图,可…...

    2024/5/8 13:28:00
  8. RecycleVeiw和ViewHolder (Adapter)适配器的抽取

    Adapter适配器的抽取public abstract class RecycleAdapter<T> extends RecyclerView.Adapter<ViewHolder> {private List<T> list = new ArrayList<>();private Context mcontext;private int postion;public RecycleAdapter(Context mcontext) {this…...

    2024/4/19 10:07:47
  9. [Python]小甲鱼Python视频第014课(字符串:各种奇葩的内置方法)课后题及参考解答...

    # -*- coding: utf-8 -*- """ Created on Tue Mar 5 23:23:41 2019@author: fengs """"""测试题:0. 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?方法1:三引号运算符方法2:() 小括号1. 三引号字符串通…...

    2024/4/17 9:47:16
  10. ajaxPro

    1.添加ajaxPro 的引用 (我资源上有,ajaxPro) 2.在<system.web>配置节点下添加 <httpHandlers> <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro"/> </httpHandlers> 3。在Page_load事件下…...

    2024/4/18 11:08:43
  11. 如何实现让编辑支持word内容和截图的复制黏贴

    1.4.2之后官方并没有做功能的改动,1.4.2在word复制这块没有bug,其他版本会出现手动无法转存的情况本文使用的后台是Java。前端为Jsp(前端都一样,后台如果语言不通得自己做 Base64编码解码)因为公司业务需要支持IE8 ,网上其实有很多富文本框,效果都很好。例如www.wangEdi…...

    2024/4/14 22:56:38
  12. 浅析Android的Context

    欢迎访问我的个人网站:https://coderyuan.comContext是Android App中用的非常多的一种概念,常被翻译成上下文,这种概念在其他的技术中也有所使用,无意间点了Context的源码,那么就来分析分析Context在Android中到底是什么东西?先贴段代码/*** Interface to global informa…...

    2024/4/18 20:49:06
  13. AjaxPro的基本使用(js调后台方法)

    AjaxPro也就是AJAX.NET (Professional),它是ASP.NET平台上著名的AJAX框架 1.首先在Web项目的Bin目录下添加对AjaxPro.2.dll的引用。 2.在web.config中的<system.web>下加入以下配置:<httpHandlers> <add verb="POST,GET" path="ajaxpro/*.ash…...

    2024/4/19 1:48:46
  14. Web开发人员常用速查手册

    不管你是多么优秀的程序员,你都不可能记住一切。在你编写程序的过程中碰到问题需要查阅手册的时候,若有现成的手册可参考则可以为你节省很多时间。为了方便各位朋友,本文收集了一些对Web开发人员非常有用的手册,记得推荐一下哦。 HTML 速查手册HTML/XTML in one page HTML5…...

    2024/4/12 17:04:57
  15. python实现括号匹配总结

    括号匹配问题思路把输入字符串转化为只含有(,),[,],{,}的字符串; 遍历新的字符串,将字符串中的(),[],{} replace为 ’ ‘(空字符),直到字符串中不再含有(),[],{}。 判断剩余的字符串是否为空,若为空,则匹配。代码def isValid(s):l = [{,},[,],(,)]res = []for i i…...

    2024/4/12 6:03:21
  16. 小甲鱼python课后练习题通讯录编写

    1.小甲鱼python课后题目 用字典知识编写一个通讯录小脚本1.首先我们在作业题上模拟一下真实场景,就是先导入一个通讯录,然后改动联系人信息以后还能将其导出。2.实现代码 #=====导入通讯录=====# def txtread(path):f=open(path,r, encoding=UTF-8 )for each_line in f:(name…...

    2024/4/12 6:02:57
  17. nginx使用热部署添加新模块

    简介 当初次编译安装nginx时,http_ssl_module 模块默认是不编译进nginx的二进制文件当中,如果需要添加 ssl 证书。也就是使用 https协议。那么则需要添加 http_ssl_module 模块。假设你的nginx安装包目录在/home/johnson/nginx-1.17.5,下面会用到 小知识点:使用/home/johns…...

    2024/4/12 6:03:15
  18. 三中常用的延时

    //延迟执行//1.timer定时器 // NSTimer *timer = [NSTimer timerWithTimeInterval:<#(NSTimeInterval)#> target:<#(nonnull id)#> selector:<#(nonnull SEL)#> userInfo:<#(nullable id)#> repeats:<#(BOOL)#>]//2.performSelector // [s…...

    2024/4/20 3:57:17
  19. 小甲鱼Python学习笔记-元祖

    >>> temp = (‘小甲鱼’, ‘黑夜’, ‘迷途’, ‘小布丁’) # 如果我想在“黑夜”和“迷途”之间插入“怡静”,我们应该: >>> temp = temp[:2] + (‘怡静’,) + temp[2:]1.元祖添加元素的方法(其实是指向另一个新的元祖对象地址)>>> x, y, z = …...

    2024/4/13 9:32:40
  20. noi.openjudge.cn 2705括号匹配问题

    2705:扩号匹配问题查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB 描述在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右…...

    2024/4/16 15:17:32

最新文章

  1. 全体模型师请做好日入过万的准备!3D模型库海量资源,老子云平台免费用

    在数字化的大背景下&#xff0c;3D转型已然成为了多行业关注的重点战略版块。无论是科技、金融、互联网、化工、建筑等等各个行业都在加速布局&#xff0c;3D手段会成为下一个重要的技术风口。也正因如此&#xff0c;3D市场潜能巨大&#xff0c;并且3D需求每年都在暴涨&#xf…...

    2024/5/9 5:06:35
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 探索进程控制第一弹(进程终止、进程等待)

    文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么&#xff1f;进程终止的情况代码跑完&#xff0c;结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…...

    2024/5/5 1:11:34
  4. 汽车疲劳测试试验平台技术要求(北重厂家)

    汽车疲劳测试试验平台技术要求通常包括以下几个方面&#xff1a; 车辆加载能力&#xff1a;测试平台需要具备足够的承载能力&#xff0c;能够同时测试多种车型和不同重量的车辆。 动力系统&#xff1a;测试平台需要具备稳定可靠的动力系统&#xff0c;能够提供足够的力和速度来…...

    2024/5/8 14:02:58
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/9 4:20:59
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57