博客

  • wps官网最新下载的地址怎么找

      游戏内购简介背景内购组成内购生命周期Googlewps官网最新下载的入口在哪 Play支付的封装思路初始化购买校验wps office的免费版的下载网址怎么找交易恢复购买到底是怎wps的的官网下载的网站在哪(wps官网首页电脑版下载)么个逻辑WPS office的电脑版的下载网站?恢复购买的使用测试弱网的情况下:上一次弱网,没有交 wps官网最新下载网站在哪里易完成的情况下,下一次初始化时能否自动重新购买?续订,续订需要哪些操作?订阅到期最后wps的的官网的下载网站是什么

      简介
    wps的的官网下载的网站
      最近又有时间整理下笔记了,开心!这篇笔记主要是记录游戏内购的逻辑,以及对Google play支付SDK的封装思路。
    wps官网最新的下载的入口是多少
      背景

      内购的含义就是应用内部购买wps office 的官方的下载的入口是多少。内购对我们来说有什么作用呢?对于用户而言,他可以通过购买角色、皮肤、装备等,来满足自己的攀比心、胜负欲

  • wps office 官方下载的网站怎么找

      目录

      一、logstash简介

      二、安装

      三、与elasticsearch连用

      四、将logstash伪装成日志服务器,接受远程日志

      五、logstash的多行过滤

      六、grok切片过滤

      官网:Logstash Introduction | Logstash Reference [7.6] | Elastic

      Logstash是一个开源的服务器端数据处理管道,拥有200多个插件,能够同时从多个来源采集数据, 转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多 都是 Elasticsearch);

      Logstash管道有两个必需的元素,输入和输出,以及一个可选 元素过滤器wps的电脑版下载地方(wps office下载安装9.0)。

      

      输入:采集各种样式、大小和来源的数据。

      Logstash wps 的官网最新的下载地方在哪里 支持各种输入选择 ,同时从众多常用来wps官网的下载地方的方法源捕捉事件。 能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、 数据存储以及各种 AWS 服务采集数据。

      过滤器:实时解析和转换数据wps 的官网的下载的入口

      数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。

      利用 Grok 从非结构化数据中派生出结构

      从 IP 地址破译出地理坐标

      将 PII 数据匿名化,完全排除敏感字段

      简化整体处理,不受数据源、格式或架构的影响

      输出:选择您的存储库,导出数据

      尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索 和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

      官网安装文档:Installing Logstash | Logstash Reference [7.6] | Elastic
    wps官网最新的下载的网址在哪
      下载地址:Download Logstash Free | Get Started Now | Elastic

      环境:需要Java环境,主机的内存1G以上

      sincedb文件一共6个字段:

      inode编号 ;2. 文件系统的主要设备号 ;3. 文件系统的次要设备号 ;4. 文件中的当前字节偏移量 ;5. 最后一个活动时间戳(浮点数); 6. 与此记录匹配的最后一个已知路径。

      对输入文件进行简单分析:正确的日志都是以时间开头的,并且被中括号[ ]括起来的一行,而错误日志有很多行,比如下图的at wps电脑版的下载的地方 org开头的这些,他们合起来应该是一条错误日志。

      查看日志时,一般都有一定的规律。比如查看apache的日志,先是访问的ip,时间等等。在查看时我们需要查看其中一组数据,比如只想要ip这一列。此时就可以使用logstash的切片功能,根据日志的特征自定义grok的书写,得到想要的切片。

      【编写切片格式】官方在:/usr/share/logstash/vendor/bundle/jruby/2.5.WPS office的官网最新的下载地方怎么找0/gems/logstash-patterns-core-4.1.2/patterns提供了较多的模板,可以进行参考;

      上述的文件输入,我们用的是Apche的文件输入,所以查看httpd的规定,如何写日志已经提前用变量的方法定义了按照这个规定切片就好了

  • wps office 的官方的下载地方怎么找

      Logstash是一个开源的服务器端数据处理管道。logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。

      在这里插入图片描述

      输入:采集各种样式、大小和来源的数据
    wps的官网最新的下载的网址是多少
      4. Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。

      5. 能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

      在这里插入图片描述

      过滤器:实时解析和转换数据

      数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。利用 Grok 从非结构化数据中派生出结构从 IP 地址破译出地理坐标将 PII 数据匿名化,完全排除敏感字段简化整体处理,不受数据源、格式或架构的影响

      输出:选择您的存储库,导出您的数据

      尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

      在这里插入图片描述

      实验环境:我们用server3充当logstash服务器
    wps电脑版的下载入口在哪里
      软件下载:

      https://elasticsearch.cn/download/

      logstash安装:

      命令存放的地方:

      标准输入到标准输出:

      一般情况我们输出至ES,ES进行分析,然后kibana在进行展示。

      输出至ES:

      然后再web端查看

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述
    wps的的官网最新下载的网站是多少
      我们可以看到,就在ESwps的电脑版下载的入口在哪里上可以查看了。

      显然,这种的输入是我们一直在手敲,是不方便的,所以我们可以把文件wps office免费版下载的网站怎么找(wps官网下载为什么没有中文)中的内容输出至ES。

      WPS office的官网下载的网址怎么找在这里插入图片描述

      我们删除这个logstash

      在这里插入图片描述

      现在没有logstash了,我们在重新发送

      现在它就卡在这里了,不会在重新输入数据了,这样就避免了数据的冗余

      它是怎样实现的呢?

      也就是说logstash如何区分设备、文件名、文件的不同版本?:

      因为 logstash会把进度保存到sincedb文件中,这样在下次读取的时候会直接读取这个since文件,从上次的位置在开始。

      sincedb文件一共6个字段:

      inode编号文件系统的主要设备号文件系统的次要设备号文件中的当前字节偏移量 (进度)最后一个活动时间戳(浮点数)与此记录匹配的最后一个已知路径

      我们想重新读的话删除这个文件就可以了。

      我们还可以吧文件路径这里改成我们的日志路径,比如/etc/log/httpd/access_log

      在这里插入图片描述

      在这里插入图片描述

      这样就有了100条数据

      但是这样的话太繁琐,需要在每台机器上装个logsatsh,我们可以把logstash伪装成日志服务器,直接接受远程日志,做一个日志采集服务器。

      比如我们现在想把这几个结点的日志都汇集到server3上去

      然后server3上就采集到server4上的信息了,其它两个结点同理

       wps 的官网最新下载的网站在哪在这里插入图片描述

      在这里插入图片描述

      message 那一行,就是我们输入的内容。

      我们也可以利用官方的插件,不部署logstash就采集日志

      在标准输入中,我们只能敲一行按回车就提交了,那我们如果想输入多行,怎麼办那,就可以用这个多行过滤插件。

      这样好像没有任何意义了

      我们查看日志时发现被压缩了,

      这是ES当日志超过一定大小就会自动压缩。

      我们可以通过grok插件,对消息进行拆分,步入我们想要提取IP地址,就可以使用相应的语句。当然在企业中grok不一定时最好的,我们可以在数据output 到redis ,然后通过python语言进行处理,然后再放到ES中了。

  • wps官网最新的下载的网址是什么

      随着wps的官网最新的下载的地方在哪里的兴起,WPS office的电脑版的下载网站怎么找交易平台成为了投资者进行交易的主要场所。在目前的市场上,有四个主要的WPS office的电脑版的下载网站怎么找交易平台,它们分别是A平台、B平台、C平台和D平台。这四个平台在市场上占据着重要地位,拥有大量的用户和交易量。

      A平台是WPS office的电脑版的下载网站怎么找交易市场中的领先者,它以安全稳定著称。A平台提供了多重安全保障措施,包括冷热钱包存储、多因素身份验证、风控系统等。这些措施保证了用户的WPS office的电脑版的下载网站怎么找资产的安全性。
    wps office免费版的下载的入口在哪
      此外,A平台积极与监管机构合作,符合相关法律法规的要求。它将用户的KYC(了解你的客户)和AML(反洗钱)要求作为首要任务,WPS office电脑版的下载地方的方法为用户提供合规的交易环境。

    wps office免费版的下载入口是什么
      A平台还提供了丰富的交易对,并不断推出新的WPS office的电脑版的下载网站怎么找项目WPS office电脑版的下载的入口怎么找。用户可以在A平台上方便地交易各种主流WPS office的电脑版的下载网站怎么找,满足不同投资者的需求。

      B平台是全球知名的WPS office的电脑版的下载网站怎么找交易平台。它以其巨大的用户基础和高流动性而受到投资者的青睐wps官网最新的下载的地方在哪里。B平台在不同国家和地区都设有分支机构,实现了全球交易覆盖。

      B平台提供了丰富的交易工具和功能,包括限价交易、市价交易、杠杆交易等。用户可以根据自己的风险承受能力选择不同的交易方式wps的官网下载网站。

      B平台还拥有一支专业的技术团队,保障平台的稳定运行和及时的客户服务。用户可以通过B平台快速进行WPSwps office的免费版下载地方是多少(wps官网xp版下载) office的电脑版的下载网站怎么找的买卖交易,并且享受到高效便捷的交易体验。

      C平台以其创新的交易方式和投资机会而备受关注。C平台积极推出不同类别的WPS office的电脑版的下载网站怎么找项目,并提供了创新的交易产品,如期货交易、期权交易等。
    WPS office的官网的下载的地址在哪里
      通过C平台,用户可以在WPS office的电脑版的下载网站怎么找市场中进行多样化的投资,获得更大的收益。C平台的用户界面友好,适合新手用户快速上手,并通过其丰富的教育资源和市场分析帮助用户做出明智的投资决策。

      C平台注重风险控制,确保用户的资金安全。同时,C平台还为用户提供了深度行情分析和技术指标的工具,帮助用户更好地了解市场动态,提高交易的准确性。

      D平台是一个专注于小众WPS office的电脑版的下载网站怎么找交易的平台。它提供了大量小众WPS office的电脑版的下载网站怎么找的交易对,满足了投资者对于小众项目的需求。虚拟币交易平台ap_WPS office的电脑版的下载网站怎么找四大交易平台

      通过D平台,用户可以发现新兴的WPS office的电脑版的下载网站怎么找项目,并参与其投资。D平台对于小众项目进行严格的审核和筛选,为用户提供了一个相对安全的投资环境。

      D平台的用户界面简洁明了,提供了简单易懂的操作方式。这使得即使是没有太多交易经验的用户也可以方便地进行交易。

      综上所述,A平台、B平台、C平台和D平台是当今WPS office的电脑版的下载网站怎么找交易市场上的四大交易平台。每个平台都有其独特的特点和优势,投资者可以根据自己的需求和风险偏好选择适合自己的平台进行交易。

      无论选择哪个平台,投资者都应该注意身份验证和资产安全保护。WPS office的电脑版的下载网站怎么找市场具有一定的风险性,投资者应该理性投资,遵守法律法规,并根据自己的风险承受能力进行投资决策。

  • wps office免费版下载网站(wps官网最新查询考试成绩)

      DWF Labs突袭拉盘UniLend!代币UFT大涨近16%wps官网下载地方是什么

      受此消息激励,UFT币价在短时间内迅速拉涨超过11%,最高时报0.2633美元,本文撰稿时稍有回落,报0.2442美元,近24小时内上涨了近16%。wps的免费版的下载网址在哪里

      DWF Labs于2022年9月由Web3风险投资机构和做市商Digital Wave Finance正式推出,根据DWFLabs官网资料显示,他们将自己定位为「全球加密资产做市商以及多阶段的Web3投资公司」,提供造市、场外交易以及风险投资等服务,其合作伙伴wps 的官网最新的下载入口在哪里包括Binance、ByBit、KuCoin、OKX、Gate、Crypto.com和Huobi..等40多个顶级交易所,进行现货和衍生品市场交易。在先前创办人的说明中,他们的做市方式采用程序全自动下判断wps office的免费版的下载的入口是什么。wps官网的下载入口

      wps官网的下载的网站是什么在持续低迷的市场中,DWF Labs以高频率且豪掷千金投资加密项目而闻名,值得注意的是,被投资项目公布后,其代币短期价格往往有着暴涨暴跌的倾向,因此也导致市场上的投资人对DWF Labs又爱又恨。

      以上就是DWF Labs突袭拉盘UniLend!代币UFT大涨近16%的详细内容,更多关于什么是DWF Labs?的资料请关注脚本之家其它相关文章!

      声明:文章内容不代表本站观点及立场,不构成本平台任何投资建议。本文内容仅供参考,风险自担!
    wps电脑版下载的网址的方法
      Tag:代币   WPS office的电脑版的下载网站怎么找   区块链  

  • wps office的免费版下载网址是多少

      Dusk Network是一个去中心化的区块链协议,为支付、通信和资产所有权转移提供隐私和透明的解决方案。它不同于PoW/PoS等的共识机制,引入了一种全新的面向隐私的共识机制——拜占庭协议(SBA)。Dusk是一种新的区块链,提供真正的隐私且快速安全的流媒体机制——安全隧道交换(STS)。

      DUSK令牌用于抵押和参与共识。

      此外,DUSK令牌还用于支付交易,部署dApp和天然气。代币还可以作为共识参与者的奖励。

      DUSK可以单向和通过原子交换来交换基于XSC的令牌。

      一旦发布,DUSK令牌将用于XSC内的链上治理。

      在Dusk Network中,通过协议中定义的DUSK的发射来支付块奖励。所有新发行的DUSK的大部分将奖励给共识参与者,而一小部分将拨给技术开发基金,从而为长期研究和开发创建自主的资助机制。

      Dusk Network将自己称为金融应用程序的隐私区块链。它是第1层区块链,可为机密安全合同(XSC)标准提供支持,并支持机密智能合同。Dusk Network旨在满足金融市场的需求wps官网最新的下载的地址在哪里(wps office免费版本下载)。因此,其设计的核心是可扩展的公共基础结构,交易的直接结算确定性以及严格的数据保密性。

      通过使用称为Phoenix的新型交易模型,Dusk Network致力于为交易以及智能合约带来隐私和匿名性。此外,部署在Dusk Network上的令牌wps office 官方的下载地方怎么找可以建立在Zedger之上,Zedger是基于Phoenix的混合隐私保护模型,专门为安全令牌开发。

      在“种族隔离拜占庭协议”(SBA)共识机制保护网络。根据Dusk Network团队的说法,SBA是对潜在权益证明(PoS)机制的改进,因为它结合了诸如“密码分类(彩票),隐身时间锁定交易(隐藏的股份金额)和声誉”之类的现有想法。模块以增加选择诚实节点的机会并进一步促进权力下放”。

      DUSK令牌可用作实用程序令牌,以启动交易,原子交换或部 WPS office的官网最新下载的网站署智能合约。DUSK也可以进行赌注以参与共识,并作为交换DUSK计价价值的一种手段WPS office的电脑版下载的方法的方法。将来,该团队打算通过将DUSK的用例添加到链上治理系统中来扩展它的用例。

      什么是DuskWPS office官网的下载的地址在哪里 Network(DUSK)?

      Dusk Network是一种面向隐私的区块链协议,具有隔离拜占庭协议,可提供隐私,可编程性和合同可审计性。Dusk是由一群在亚马逊,TomTom,Mozilla,Reaktor和区块链背景(Zcash,锡安城,NEO Research等)具有技术经验的企业家,工程师和研究人员组成的团队。黄昏网络目前处于测试网阶段,旨在成为一种旨在轻松部署可编程零知识dApp的区块链协议,从而成为开放,无许可且面向全球隐私的dApp生态系统的骨干。该项目旨在消除阻碍主流发行和安全令牌等产品交易的技术障碍。遵从性,可审核性和隐私性内置于开放的,未经许可的机密安全性令牌标准(“ XSC”)中。

      它的一些关键要素包括:

      从2018年8月到2018年11月,通过私人代币销售筹集了约$ 8.08MM。

      私有权益证明实施,使Block Generators可以匿名抵押。
    wps官网的下载网站是什么
      利用ZeroCaf来实现快速,高效和防弹椭圆曲线操作。

      由来自不同背景(亚马逊,TomTom,Mozilla,ZCash,锡安城,Neo Research等)的企业家,工程师和研究人员团队建立。

      它的核心功能是:

      Dusk Network旨在实现链上的隐私和可编程性,同时保持高吞吐量和即时交易的确定性。黄昏网络建立在以下关键创新之上:

      它的一些主要功能包括:

      私人股权证明:Dusk Network的共识协议,即隔离拜占庭协议(“ SBA”)由“盲人出价证明”提供支持,该协议使Block Generator可以匿名抵押。

      权力下放:通过从股权池中消除资源集中化的激励,鼓励较小的参与者参加共识。

      可替换性:共识参与者是伪随机选择的,并且与早期结果无关。

      为此,Dusk依赖于一些核心特征:

      在三个阶段达成共识:区块生成,区块减少和区块协议。

      ZeroCaf可实现快速,高效和防弹椭圆曲线操作。ZeroCaf是在Ristretto标量场上开发的椭圆曲线。

      零知识友好哈希算法Poseidon的实现。

      用于零知识验证和零知识虚拟机体系结构的浏览器节点wps的官网最新的下载地方。

      即时交易的完成性:由于Dusk Network的属性,共识协议的交易是在完成区块后立即完成的,除了可以忽略的分叉概率外。

  • wps 的官网最新下载入口是什么

      DODO是一个领先的去中心化交易所( DEX ) 平台,通过其创新的做市算法(PMM)彻底改变了代币交易。凭借其用户友好的界面,Dodo 为用户提供无缝的交易体验,确保以太坊区块链上快速、安全的交易。本文将为大家讲述的是DODO 项目概述,DODO 有哪些产品功能和独特的用例?并大家介绍DODO 项目风险评估与建议。

      

      $DODO 基本信息:

      创建日期: DODO 于 2020 年成立。

      创始人:

      Radar Bear(联合创始人,首席执行官)

      Qi Wang(联合创始人)

      Diane Dai(联合创始人兼首席营销官)

      Eric Yang(合作伙伴关系负责人)

      融资信息:

      种子轮: 600,000 美元(2020 年 8 月 29 日)

      私募轮: 500 万美元(2020 年 10 月 12 日)

      投资者:

      三箭资本

    wps的的官网最新下载网站是多少(wps下载电脑版没反应怎么解决)
      潘特拉资本

      框架风险投资公司

      币安实验室

      星系

      IOSG Ventures 等

      基本目标和愿景:

      目标: DODO 旨在利用其创新的主动做市商(PMM)算法提供高效的链上流动性。

      愿景: 通过提供一个可靠、可扩展和高效的去中心化交易平台,超越传统的自动做市商(AMM),从而彻底改变去中心化金融(DeFi)。

      服务/产品提供:

      去中心化交易平台: 通过流动性池促进加密货币交易。

      主动做市商(PMM): 一种独特的算法,旨在提供比传wps官网最新的下载的方法怎么找统 wps office的免费版的下载入口怎么找 AMM 更好的流动性和更低的滑点。

      跨链操作: 在多个区块链上运行,包括以太坊、BNB 链、Polygon、Aurora、Conflux、Base 和 Manta。

      答案是肯定会的,通过以下几点确认 #DODO助力Meme发行

      区块链平台:

      DODO 在多个区块链平台上运行,包括以太坊、BNB 链、Polygon、Aurora、Conflux、Base 和 Manta,增强了其互操作性和可访问性。

      智能合约功能:

      DODO 的智能合约促进流动性池的创建和管理、交易的执行以及奖励的分配。

      代币经济学:

      代币符号: DODO

      市值: 103,826,055.89 美元

      价格(截至最新数据): 0.1333 美元

      共识机制:

      利用其运行的区块链平台的底层共识机制(例如,以太坊的权益证明)。

      可扩展性:

      DODO 的 PMM 算法旨在处理高交易量,滑点最小化,从而有助于更好的可扩展性。

      高效交易: DODO 的平台为交易者提供高效且低滑点的交易体验,使其成为零售和机构交易者的理想选择。

      流动性提供: DODO 允许用户提供流动性并赚取奖励,从而为 DeFi 生态系统的整体流动性做出贡献。

      跨链交易: 实现不同区块链网络之间的无缝交易,增强去中心化金融的可用性和采用率。

      行业: 去中心化金融(DeFi)

      市场规模:

      DeFi 市场经历了指数级增长,DeFi 协议的总锁定价值(TVL)已达到数十亿美元。

      竞争对手:

      Uniswap: 领先的基于 AMM 的去中心化交易所(DEX)。

      SushiSwap: 另一家知名的基于 AMM 的 DEX,提供类似的服务。

      1inch、Balancer: 以其聚合和流动性解决方案而闻名。

      增长潜力:
    wps官网最新下载的网站是多少
      随着越来越多的传统金融服务向去中心化转型,DeFi 领域有望实现显着增长。 DODO 的创新PMM 算法使其具备竞争优势。

      趋势:

      跨链解决方案的采用日益增加。

      机构对 DeFi 的兴趣和参与度上升。

      对 DeFi 协议的可扩展性和效率的关注不断增加。

      锚定池 (Pegged Pool):DODO 的锚定池功能为稳定币和 BTCFi 资产(如以 BTC wps的电脑版的下载入口怎么找 作为担保的衍生资产)提供了高效的流动性管理。这意味着交易这些资产变得更加稳定和可靠,对于需要稳定价值作为基础的 DeFi 应用尤其重要。锚定池通过自动调整池内的资产比例来维持价格稳定,这对于 Meme 币等可能波动剧烈的资产也是一个优势,因为它可以帮助在波动中维持一定的流动性和价值稳定。

      一键发币功能:DODO 提供了跨多链的一键发币功能,这大大降低了发行新 token 的技术门槛。尤其对 Meme 币的开发者来说,这意味着他们可以快速、低成本地在多个区块链上发行自己的 token。这种便利性促进了 Meme 币的快速发行和市场上线,增加了市场的多样性和活跃度。同时,对于 BTCFi 项目,这也意味着他们可以更容易地创建和发行基于或与 Bitcoin 相关联的资产。

      自主挖矿机制:DODO 支持用户在平台上进行自主挖矿,用户可以创建自己的wps的官网下载入口是多少挖矿活动并使用任何 token 作为奖励。这对于 BTCFi 资产和 Meme 币来说提供了新的激励机制。通过自主挖矿,用户可以用 BTCFi 或 Meme 币作为奖励来吸引更多的流动性提供者,从而增加这些资产的流动性和知名度。

      跨链交易和流动性聚合:DODO 的超级聚合器 DODO X 提供跨链交易服务,聚合了不同链上的流动性。这对于 BTCFi 资产和 Meme 币来说,意味着用户可以在不同的区块链之间更方便地进行交易和转换资产,增强了这些资产的流动性和可用性。通过聚合不同链上的流动性,交易效率和价格都得到了优化。

      社区和开发者支持:DODO 的平台特性,如私人池(Private Pool)设计用于市场制造者,允许更灵活的流动性管理。这些特性不仅吸引了更多的开发者和社区参与者,也为 BTCFi 资产和 Meme 币的开发和推广提供了平台。通过提供这些工具和环境,DODO 实际上在促进这些新兴资产类的发展和创新。

      潜在风险:wps office 官方的下载的入口(wps office下载不了怎么办)

      技术风险: 智能合约中的漏洞可能导致攻击和黑客事件(例如,2021 年 3 月的 200 万美元黑客事件)。

      市场风险: 加密货币市场的高波动性可能影响用户信心和流动性。

      监管风险: 监管框架的变化可能影响 DeFi 协议的运营和采用。

      未来计划和更新:wps电脑版下载的地址在哪

      增强安全措施: 实施先进的安全协议以防止未来的攻击。

      扩展: 进一步的跨链集成,以支持更广泛的资产和网络。

      创新功能: 引入新的金融工具和产品,以吸引多样化的用户群体。

      社区倡议: 通过治理代币和投票机制加强社区参与。

      总结:

      DODO 是一个有前景的去中心化交易平台,利用创新的 PMM 算法提供高效的链上流动性。

      尽管面临安全漏洞等挑战,DODO 由于其独特的价值主张和不断扩展的生态系统,具有显着的增长潜力。

      建议:

      对于投资者: 考虑将 DODO 作为多元化投资组合的一部分进行投资,鉴于其独特的 PMM 算法和在 DeFi 领域的增长潜力。

      对于用户: 参与 DODO 的流动性池可能会带来丰厚的回报,但了解潜在风险和平台更新至关重要。

      对于团队: 专注于增强安全措施和扩展跨链互操作性,以保持竞争优势和用户信任。

      数据分析:

      最近的时间序列数据表明价格波动,近期呈上升趋势,表明市场信心增强。

      总锁定价值(TVL)和交易量的增加反映了 DODO 用户基础和流动性的扩展。

      通过不断创新和应对潜在风险,DODO 可以巩固其在快速发展的 DeFi 领域作为领先去中心化交易平台的地位。

      以上就是DODO项目全面概述:DODO币项目投资价值分析的详细内容,更多关于DODO项目报告的资料请关注脚本之家其它相关文章!

      声明:文章内容不代表本站观点及立场,不构成本平台任何投资建议。本文内容仅供参考,风险自担!

      Tag:DODO  

  • wps office 的官方的下载的网址在哪

      在互联网中,使用IP地址与服务器进行通信根本行不通,原因如下:

      1.不好记忆如:学校官网的IP地址是"39.104 .16.126",难以记忆;

      2.IP地址会经常发生变更,所以通过IP地址去访问某台机器就容易出现无法访问的情况;

      此时DNS就应运而生了;那DNS解决了什么问题

      DNS主要用来维护域名与IP地址的对应关系。将(好记忆的字符串)与(不好记忆的P地址)

      进行关联;

      jd.com –> 1.1.1.1

      tb.com –>2.2.2.2

      域名系统 DNS (Domain Name System)主要功能是将用户请求的域名转换为IP地址;DNS就像一位"翻译官”,它的基本工作原理可以用下图来表示;

      在这里插入图片描述

      由于因特网的用户数量wps office 的官方下载地址是什么较多,所以因特网在命名时采用的是层次树状结构的命名方法。

      互联网中的域名是有结构有规划的;由于域名进行了分级,在进行域名和P地址解析时能更容易找到;。域名具备全球唯一性;

      在这里插入图片描述

      根域:知道所有顶级域名服务器的域名和地址wps官网最新下载的地方在哪

      全世界只有13组根服务器,其中10台设置在美国,另外的三台设置与英国,瑞典,日本;因为UDP端口的原因,不能在扩建新的服务器了。 顶级域:知道所有顶级域名服务器下注册的所有二级域名的IP地址

      顶级域有两种:通用域(com、cn)域和国家域(hk、 jp);顶级域名由ICANN(互联网名称与数字地址分配机构)委任的注册机构负责运行; 二级域:负责一个区的域名服务器(taobao.com)

      无需到ICANN进行申请,只需要到运行顶级域的注册机构(阿里、腾讯)去申请即可如果申请的域名没有被注册,也没有被注册为商标,仅需要缴纳一笔年费即可获取 三级域或主机名:

      根据服务器所提供的业务功能,选择配置对应的主机名称解析记录,比如(www、ops)

      下面的示例则概述了本地解析器没有域名对应的缓存,DNS 查询所需的步骤:

      1、用户在浏览器中输入example.com,则向本地域名服务器开始进行递归查询。

      2、本地域名服务器采用迭代查询的方法,向根域名服务器进行查询。

      3、根域名服务器告诉本地域名服务器,下一步应该查询的顶级域名服务器﹒ TLD(top-level domain)的IP地址。·

      4、本地域名服务器向顶级 wps的官网最新下载网址在哪里域名服务器.com TLD进行查询。

      5、.com TLD服务器告诉本地域名服务器,下一步查询example.com权威域名服务器的IP地址。·

      6、本地域名服务器向example.com 权威域名服务器发送查询。

      7、example.com权威域名服务器告诉本地域名服务器所查询的主机lP地址。

      8、本地域名服务器最后把查询的IP地址响应给浏览器。

      在这里插入图片描述

      在这里插入图片描述

      1.4.1 递归查询

      是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。

      1.4.2 迭代查询

      是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。

      1.5.1 A记录

      A 记录可实现将域名指向 IP 地址,也称为正向解析;正向解析:域名–>DNS服务返回 IP

      在这里插入图片描述

      1.5.2 PTR

      PTR记录可以实现IP查找域名,也称为反向解析;

      反向解析:IP–>DNS服务返回域名;(主机域 内网使用;)

      在这里插入图片描述

      1.5.3 CNAME

      当需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录;最常用 CNAME 的场景有 WAF、CDN

      在这里插入图片描述

      1.5.4 NS

      客户端查询DNS服务,如当前DNS无法提供权威解析,则返回一条NS记录;客户端在通过 NS记录中提供的DNS权威服务器进行解析;在这里插入图片描述

      企业常规做法:购买域名、完成ICP备案,并使用公网DNS服务(万网…)进行免费(付费)解析·既然企业可以通过公网来完成域名解析&wps的免费版的下载的入口#xff0c;为何还要自建IDNS呢?

      1.内网web服务,例如: jenkins、 jumpserver、elk等,不适合解析至公网

      2.内网中间件服务db、mql等,会经常迁移或扩缩容,应该使用域名对外提供,便于维护;

      3.服务器都有hostname,hostname应该设置为FQDN,如何维护主机名和主机的内网P的关系;

      FQDN:(Fully Qualified Domain Name) FQDN = Hostname + DomainName

      综上:我们需要构建至少—套企业内部的DNS服务;

      BIND(由美国加州大学开发并且维护的)、BIND`是一个开源、稳定、且应用广泛的DNS服务。

      开源:指BIND服务源代码是开放的;稳定:指BIND服务运行非常稳定;广泛:政府企业、单位机构、学校、等;

      BIND提供(域名解析服务、权威域名服务、DNS调试工具)

      域名解析服务:将域名解析为IP地址

      权威域名服务:能从该服务器查询到完整域名对应的IP地址,则这台服务器就算权威解析;

      DNS调试工具:主要提供DNS客户端调试工具,供客户端使用;

      1.环境准备

      2.安装wps 的官网最新下载的网站

      Bind的安装非常简单,只需要通过yum 即可完成安装;bind提供主程序包;bind-utils提供工具包;

      2.客户端解析验证

      1.配置 DNS服务器指向:在 /etc/resolv.conf 里配置 DNS的 ip 地址

      3.BIND配置文件

      自定义域分为如下两类:

      主机域(内网):

      主机域其实是一个假的域名;主机域是不能解析到互联网上;主机域它只对局域网提供服务;

      业务域(公网):

      业务域一般都是真实可用的;业务域是需要对外网用户提供服务的域名;

      2.4.1 自定义区域配置文件

      区域 zone 文件定义在 /etc/named.conf 配置;

      也可以配置在自定义的其他文件里,并在 named.conf里 include声名一下

      注意文件的权限,属主 root 属组 named, 文件权限 640

      自定义一个域名:

      1.自定义区域配置文件;(告诉bind服务,我提供某某的解析,数据库文件位置)

      2.自定义区域数据库文件:

      自定义域

      自定义数据库文件

      注:;为注释

      3.检查配置文件语法

      4.检查区域数据库文件配置

      5.重载DNS服务器

      6.客户端测试解析域名

      用户通过DNS服务器172.16.1.91解析www.job.com。

      1.添加job.com区域配置文件

      2.添加区域数据库文件,配置NS记录,返回 DNS权威服务器地址

      3.该域的DNS权威服务器为172.16.1.91

      4.添加该域的CNAME解析记录,解析至 www.bertwu.com域名上

      1.添加域配置文件wps的官网下载地方

      2.添加数据库表文件

      3.重启并测试

      反向区域文件名称为 逆向网络地址 加 .in-addr.arpa. 后缀组成反向区域数据库文件 完全格式为1.16.172.in-addr.arpa.(DNS服务器地址为172.16.1.91时)

      1.新增区域配置文件,在主/etc/named.conf中新增反向区域配置

      2.配置数据库配置表文件

      3.检查配置语法重启

      4.测试

      就是查询本机不存在的域名,会帮你查询。如果关闭,只能查询本机已经配置的域名。

      如果要建立一个授权域名服务器,仅提供本地已存在域名解析;那么将 recursion 参数设置 no;如果要建立一个递归 DNS 服务器,那么需要将 recursion 参数设置 yes;如果递归 DNS 服务器有公网 IP 地址,则需要开启访问控制功能,只有合法的用户才可以发起查询。

      参数选项作用recurisonyes/no是否开启递归查询请求allow-recursion`{address_match_listany

      3.2.1 开启递归查询

      BIND默认配置中的 recurison 参数是启用的;

      1.配置仅允许 172.16.1.0 网段用户可以查询(可选);

      2.使用客户端查询系统中存在的域名;

      3.使用客户端查询系统中不存在的域名(让BIND进行递归查询,后续进行迭代查询);

      1.查询存在BIND服务器中的域名

      2.查询不存在BIND服务器中的域名

      3.2.2 关闭递归查询测试

      1.修改/etc/named.conf文件

      2.查询BIND服务器没有的域名,会提示警告

      3.查询BIND已有的域名,不受影响

      辅助DNS是DNS容灾备份服务:在主DNS和辅DNS之间建立区域数据传输机制,当主DNS遇到故障或者服务中断时,辅DNS仍可以继续提供解析服务,因此保障业务稳定运行。

      辅助DNS的优势:wps office的免费版下载地方是什么(金山wps官网最新首页下载)

      容灾备份,降低业务中断风险:主DNS系统故障,辅助DNS可继续提供域名解析服务,保障业务可用性。负载均衡,流量均摊降低负载:当辅助DNS与主DNS同时对外提供解析服务时,可以达到流量负载均衡的效果。

      在这里插入图片描述

      4.3.1 环境准备

      1.确保防火墙规则开放(建议关闭);

      2.保持主从服务器时钟一致;

      3.搭建完主从后,若修改主服务器域配置,Serail Number 必须递增,否则不同步;

      4.3.2 主辅同步配置要点

      1.主DNS修改named.conf配置文件,在option段添加如下内容:

      添加 allow-transfer:允许哪些IP地址能同步Master配置信息;添加also-notify:Master主动通知Slave域名变发生了变更;

      2.辅DNS修改named.conf配置文件:

      添加masterfile-format text:同步的文件类型修改为text否则文件类型为data;辅助DNS添加对应的区域配置文件,类型为 slave,同时masters 参数指向主DNS地址;辅助DNS不可主动修改DNS数据库文件;

      4.3.3 Master服务器配置

      1.区域配置文件

      2.添加区域数据文件(需要多添加一条NS记录)

      3.检测语法,重启服务

      4.3.4 Slave服务器配置

      1.安装bind服务

      2.修改并添加区域配置文件

      4.最终的文件如下

      5.检查语法重启服务

      4.3.5 测试主辅解析

      4.3.5 测试主辅同步

      主新增一条解析记录,然后滚动 serial

      测试

      查看辅,可以看到的确将新的解析记录同步过来了

      4.3.6 配置DNS高可用

      1.linux配置

      2.windows配置

      在这里插入图片描述

      5.3.1 父域配置(Master)

      1.区域配置文件此前可以复用之前主辅配置,所以无需修改;

      2.区域文件数据库文件,将 ops 三级子域授权给子域服务器;

      5.3.2 子域配置

      1.安装bind

      2.修改主配置文件,然后增加子域的配置文件

      3.添加区域数据数据库文件

      4.检查语法,启动服务

      5.测试

      解析父域名

      问题:由于父域与子域互相维护不同的区域配置,它们之间并不存在任何的联系,所以子域在解析父域的域名时,它并不会直接通过父域来获取权威的解析记录,那它会怎么做呢?

      第一步:它会先找顶点根域;

      第二步:寻找找 com 域对应的 DNS 服务器;

      第三步:寻找 bertwu 域对应的 DNS 服务器,而后获取 www 对应的解析记录;这种查找模式是由 DNS 的机制所决定的;

      解决的方法:明确告诉子域,让其能找到父域进项查询解析,而无需查找根域;(需要配置 DNS 的转发)

      转发指的是将域名查询请求,转至某一台服务器解析(被转发的服务器必须允许为当前服务器做递归)

      转发分为两类;

      区域转发:仅转发对某特定区域的解析请求;全局转发:针对本地没有通过 zone 定义的区域查询请求,统统转发;

      转发参数:

      全局转发示例配置(所有本地不存在的域名都进行转发)

      区域转发示例配置(符合该区域则进行条件转发)

      6.3.1 子域配置转发

      1.在子域服务器上,添加父域的域名,然后配置转发;

      2.检查语法并重载

      3.通过子域的地址解析父域的域名

      智能DNS就是根据用户的来源地域,自动智能化判断来路IP返回给用户,而不需要用户进行选择;

      传统DNS解析,不判断访问者来源,会随机选择其中一个IP地址返回给访问者。智能DNS解析,会判断访问者的来源,为不同的访问者智能返回不同的IP地址,可使访问者在访问网站时可获取用户指定的IP地址,能够减少解析时延,并提升网站访问速度。

      比如一个企业的站点三个运营商的带宽都有:电信、联通、移动;同样来自三个不同 运营商网络的访问用户,假设电信用户访问企业网站的时候,智能DNS会自动根据IP判断,返回电信服务器节点IP给电信用户,其他运行商也同理;

      电信用户:访问 www.bertwu.com 返回1.1.1.1联通用户:访问 www.bertwu.com 返回2.2.2.2移动用户:访问 www.bertwu.com 返回3.3.3.3

      在这里插入图片描述

      实现智能DNS需要VIEW视图以及ACL访问控制列表协同完成;

      在这里插入图片描述

      7.2.1 ACL访问控制

      访问控制列表(Access Control Lists,ACL)

      ACL访问控制列表,是用来限制哪些主机可以通过DNS查询,哪些不可以;系统默认内置了四种ACLany:允许所有主机节点查询;none:拒绝所有主机节点查询;localhost:仅允许本地接口网络主机查询;localnet:本地子网所有IP;

      当然内置的可能无法满足企业需求,所以我们也可以自定义ACL规则;

      定义的acl规则如何使用

      7.2.2 VIEW视图功能

      view 语句定义了视图功能,视图是BIND9提供的强大功能,允许DNS服务器根据不同的客户端,请求相同的域名,但返回不同的解析结果;

      view语法示例:

      维护一个主机域;根据不同环境的IP地址,查询相同域名,返回不同的结果;(企业常用)维护一个业务域,根据不同的运行商IP地址,解析到不同的地址;(需要大量IP地址库)

      7.3.1wps office免费版下载的地址是多少 定义ACL规则

      7.3.2 总配置文件如下

      默认域名解析与测试环境保持一致

      生产环境数据库

      默认环境数据库,只需要对test目录做 一个软连接到default目录,注意权限属组为named

      7.3.3 测试不同ip请求同一域名www.example.com 返回不同解析

      7.3.4 多域名智能DNS实现

      只需要在view视图中定义zone 然后写相应的zone区域数据库文件即可

      需要default返回测试环境定义的ip 只需要给default/bertwu.com.zone为 test下面对应的文件的软连接或硬连接即可。

      基于TSIG wps电脑版的下载的地址是多少 KEY实现多view主从同步,TSIG KEY是基于对称密钥加密技术实现的DNS报文认证机制。·密钥生成后存放至通信双方的配置文件中,报文传送前使用对称加密技术;

      7.4.1生成TSIG-KEY

      使用BIND自带的工具ddns-confgen生成 TSIG-KEY,每个view需要一对TSIG-KEY

      执行三次,得到三对对称秘钥

      master主配置文件

      slave从配置文件

      测试

      master :

      slave:

      修改vmnet8网卡

      在这里插入图片描述

      删除本地hosts文件,然后浏览器测试。

  • wps office免费版的下载的地方怎么找

      DNP3.0规约分析仪使用简单,打开软件就可以显示数据发送界面,可以在软件捕获接收数据、捕获发送数据、显示捕获数据,随后将数据保存 wps的电脑版的下载的网站在哪里(wps下载电脑版官方下载官网最新安装)为dat,方便你在其他软件使用,软件界面提供详细的发送命令设置功能,当你需要测试协议的时候就可以在软件编辑发送内容,从而使用内置的命令独立发送,支持召唤 Class数据、召唤遥信状态、召唤遥测数据、电度冻结、召唤电度数据等命令设置,每种命令都提供多种选择,让用户在分析DNP3.0的时候更方便!

      wps office的免费版下载的地址在哪(wps官网最新下载电脑版下载)49d63376bdd359e55ff4260bad875fe1.pngwps office的免费版的下载地方怎么找

      软件功能

      1、DNP3.0规约分析仪功能丰富,在软件连接通道就可以开始测试

      2、软件提供发送命令设置,可以在软件显示发送队列
    wps的免费版的下载的方法的方法
      3、可以显示多次发送的内容,软件接收数据显示在独立窗口

      4、支持将数据保存,接收测试数据就可以将其保存在dat文件
    WPS office官网最新的下载网站的方法
      5、支持多种命令,可以选择遥控选点命令、遥控执行命令、遥控(选点并执行)命令

      6、支持召唤 RTU IIN(80.1),清除 RTU IIN(80.1),这些命令都是软件提供的wps的的官网下载的地址在哪(wps下载电脑版没反应怎么办)

      7、支持批量测试功能,可以对界面的内容直接发送,从而批量分析
    WPS office官网最新的下载地址是什么
      8、在信息控制界面可以选择接收暂停显示、发送暂停显示、结果暂停刷新、全部暂停

      软件特色

      1、DNP3.0规约分析仪使用简单,发送信息自动捕捉

      2、打开软件就可以自动显示发送信息窗口,每

  • WPS office官网最新的下载方法的方法

      

      用于搭建Web应用程序免去不同Web应用相同代码部分的重复编写,只需关心Web应用核心的业务逻辑实现

      接收并解析HTTP请求,获取具体的请求信息处理本次HTTP请求,即完成本次请求的业务逻辑处理构造并返回处理结果——HTTP响应

      如何搭建工程程序

      工程的组建工程的配置路由定义视图函数定义如何获取请求数据(操作request对象)

      如何构造响应数据(构造response对象)

      框架提供的其他功能组件的使用

      数据库

      模板

      admin

      重点

      MVT流程:掌握M,V,T的每个模块的功能,了解MVT的流程

      

      创建Django项目和应用

      django-admin startproject name

      python manager.py startapp name

      视图和ULR

      视图的请求和响应

      URL的匹配路径

      简介

      Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SDTimes评选为2013SDTimes100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者。

      Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则。

      特点

      重量级框架

      对比Flask框架,Django原生提供了众多的功能组件,让开发更简便快速。
    wps的的官网最新的下载网址怎么找
      提供项目工程管理的自动化脚本工具

      数据库ORM支持(对象关系映射,英语:Object Relational Mapping)

      模板

      表单

      Admin管理站点

      文件管理

      认证权限

      session机制 缓存

      MVT模式

      有一种程序设计模式叫MVC,其核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。

      MVC的全拼为Model-View-Controller,最早由TrygveReenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式,是为了将传统的输入(input)、处理(processing)、输出(output)任务运用到图形化用户交互模型中而设计的。随着标准输入输出设备的出现,开发人员只需要将精力集中在业务逻辑的分析与实现上。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。现在虽然不再使用原来的分工方式,但是这种分工的思想被沿用下来,广泛应用于软件工程中,是一种典型并且应用广泛的软件架构模式。后来,MVC的思想被应用在了Web开发方面,被称为Web MVC框架。

      MVC模式说明

      

      M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。V全拼为View,用于封装结果,生成页面展示的html内容。C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。

      Django的MVT

      

      M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。

      注:差异就在于黑线黑箭头标识出来的部分

      为什么要搭建虚拟环境?

      举例子:

      A项目需要的环境: python2.7 + django1.1B项目需要的环境: python3.7 + django2.2

      不装个虚拟环境那就难搞了,python环境中不能同时安装django1.1和django2.2,

      所以就需要虚拟环境进行隔离

      windows环境:

      安装virualenv(这个才是真正才能创建虚拟环境)

      

      新建一个文件夹存放虚拟环境

      

      新建虚拟环境

      虚拟环境名称为my_django,自己命名即可

      virtualenv my_django

      

      进入并且激活虚拟环境

      去到虚拟环境中的Script目录下

      

      执行activate 进行激活虚拟环境

      

      检查虚拟环境 pip list

      

      下面这个是真实环境

      

      这样环境就隔离了。

      后面需要安装第三方的包,先进入虚拟环境再安装

      退出虚拟环境

      直接在虚拟环境中执行deactivate命令,就可以退出虚拟环境了,有的可能需要.bat,有的不需要

      

      安装virtualenvwrapper

      上面每次进入virtual我们都需要进入到virtualenv的目录下,一旦virtualenv过多,就麻烦了,我们可以使用Virtualenvwrapper来方便地管理python虚拟环境。

      

      设置WORK_HOME环境变量

      给虚拟环境设置一个专门的目录

      

      配置电脑系统环境变量,新建系统变量 -> 变量名:WORKON_HOME ->指定路径:

      G:python_webcodeworkpaceenvs

      

      通过设置WORKON_HOME路径,就给我们的python虚拟环境指定了一个存放位置

      注意: 环境变量配置好之后,要重开cmd,这样环境变量才生效!!

      新建虚拟环境

      

      因为前一步设置了WORK_HOME,所有虚拟环境将安装到:G:python_webcodeworkpaceenvs

      退出虚拟环境

      

      进入虚拟环境

      workon #列出所以目录下虚拟环境

      workon 虚拟环境名称 # 进入虚拟环境

      

      删除虚拟环境

      

      pycharm结合virtualenv虚拟环境使用

      只要把pycharm的环境变量选择为虚拟环境的中的python环境即可。

      

      要选择虚拟环境中的 python.exe 文件

      

      Linux环境:

      安装虚拟环境的命令 :

      安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:

      创建虚拟环境的命令 :

      提示:如果不指定python版本,默认安装的是python2的虚拟环境

      在python2中,创建虚拟环境

      在python3中,创建虚拟环境

      

      提示 :

      创建虚拟环境需要联网创建成功后, 会自动工作在这个虚拟环境上工作在虚拟环境上, 提示符最前面会出现 “虚拟环境名称”

      如何使用虚拟环境?

      查看虚拟环境的命令 :

      

      使用虚拟环境的命令 :

      

      退出虚拟环境的命令 :

      

      删除虚拟环境的命令 :

      WPS office电脑版下载的方法怎么找

      如何在虚拟环境中安装工具包?

      提示 : 工具包安装的位置 :

      python2版本下:

      python3版本下:

      python3版本下安装django-1.11.11的包 :

      

      查看虚拟环境中安装的包 :

      

      步骤

      创建Django项目

      django-admin startproject name

      创建子应用

      python manager.py startapp name

      创建工程

      在使用Flask框架时,项目工程目录的组织与创建是需要我们自己手动创建完成的。

      在django中,项目工程目录可以借助django提供的命令帮助我们创建。

      创建

      创建工程的命令为:

      例如:想要在桌面的code目录中创建一个名为bookmanager的项目工程,可执行如下命令:

      执行后,会多出一个新目录名为bookmanager,此即为新创建的工程目录。

      工程目录说明

      查看创建的工程目录,结构如下

      

      与项目同名的目录,此处为bookmanager。settings.py是项目的整体配置文件。urls.py是项目的URL配置文件。wsgi.py是项目与WSGI兼容的Web服务器入口。manage.py是项目管理文件,通过它管理项目。

      运行开发服务器

      在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用。

      运行服务器命令如下:

      可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。

      启动后可见如下信息:

      

      在浏览器中输入网址“127.0.0.1:8099”便可看到效果。

      

      django默认工作在调式Debug模式下,如果增加、修改、删除文件,服务器会自动重启。按ctrl+c停止服务器。

      创建子应用

      在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该模块代码整体复制过去,达到复用。

      在Flask框架中也有类似子功能应用模块的概念,即蓝图Blueprint。

      Django的视图编写是放在子应用中的。

      创建

      在django中,创建子应用模块目录仍然可以通过命令来操作,即:

      manage.py为上述创建工程时自动生成的管理文件。

      例如,在刚才创建的bookmanager工程中,想要创建一个用户book子应用模块,可执行:

      执行后,可以看到工程目录中多出了一个名为book的子目录。

       wps office 的官方的下载的网站是什么

      子应用目录说明

      查看此时的工程目录,结构如下:

      

      admin.py文件跟网站的后台管理站点配置相关。apps.py文件用于配置当前子应用的相关信息。migrations目录用于存放数据库迁移历史文件WPS office的电脑版的下载地址。models.py文件用户保存数据库模型类。tests.py文件用于开发测试用例,编写单元测试。views.py文件用于编写Web应用视图。

      注册安装子应用

      创建出来的子应用目录文件虽然被放到了工程项目目录中,但是django工程并不能立即直接使用该子应用,需要注册安装后才能使用。

      在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用,初始工程中的INSTALLED_APPS如下:

      

      注册安装一个子应用的方法,即是将子应用的配置信息文件apps.py中的Config类添加到INSTALLED_APPS列表中。

      例如,将刚创建的book子应用添加到工程中,可在INSTALLED_APPS列表中添加'book.apps.BookConfig'。

      

      当前项目的开发, 都是数据驱动的。

      以下为书籍信息管理的数据关系:书籍和人物是 :一对多关系

      

      要先分析出项目中所需要的数据, 然后设计数据库表.

      书籍信息表

      字段名字段类型字段说明idAutoField主键nameCharField书名

      idname1西游记2三国演义

      人物信息表

      字段名字段类型字段说明idAutoField主键nameCharField人名genderBooleanField性别bookForeignKey外键

      idnamegenderbook1孙悟空False12白骨精True13曹操False24貂蝉True2

      使用Django进行数据库开发的提示 :

      设计模式中的, 专门负责和数据库交互.对应由于中内嵌了, 所以不需要直接面向数据库编程.而是定义模型类, 通过完成数据库表的.就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象.

      使用Django进行数据库开发的步骤 :

      定义模型类模型迁移操作数据库

      1. 定义模型类

      根据书籍表结构设计模型类:

      模型类:BookInfo书籍名称字段:name根据人物表结构设计模型类:

      模型类:PeopleInfo人物姓名字段:name人物性别字段:gender外键约束:book

      外键要指定所属的模型类说明 :

      书籍-人物的关系为一对多. 一本书中可以有多个英雄.不需要定义主键字段, 在生成表时会自动添加, 并且值为自增长.

      根据数据库表的设计

      在中定义模型类,继承自

      模型迁移 (建表)

      迁移由两步完成 :

      生成迁移文件:根据模型类生成创建表的语句

      执行迁移:根据第一步生成的语句在数据库中创建表

      迁移前

      

      迁移后

      此处存在的问题

      运行迁移命令报错

      

      原因:

      在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:

      TypeError: __init__() missing 1 required positional argument: 'on_delete'

      举例:

      应该为

      参数说明:

      on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值

      CASCADE:此值设置,是级联删除。PROTECT:此值设置,是会报完整性错误。SET_NULL:此值设置,会把外键设置为null,前提是允许为null。SET_DEFAULT:此值设置,会把设置为外键的默认值。SET():此值设置,会调用外面的值,可以是一个函数。

      一般情况下使用CASCADE就可以了。

      站点: 分为和两部分内容发布的部分由网站的管理员负责查看、添加、修改、删除数据能够根据定义的模型类自动地生成管理模块使用的管理模块, 需要按照如下步骤操作 :

      1.管理界面本地化2.创建管理员3.注册模型类4.发布内容到数据库

      管理界面本地化

      本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化.中国大陆地区使用, 时区使用, 注意这里不使用北京时区.

      本地化前

      

      本地化后

      

      创建管理员

      创建管理员的命令 :

      按提示输入用户名、邮箱、密码

      

      重置密码

      登陆站点 :

      需要服务器是启动状态

      

      登陆站点成功

      站点界面中没有书籍和人物管理入口,因为没有注册模型类

      

      注册模型类

      在的文件中注册模型类

      需要导入模型模块 :

      

      注册模型后

      

      注册模型成功后, 就可以在站点管理界面方便快速的管理数据.

      发布内容到数据库

      

      然后就报错了

      

      原来不会去数据库生成数据表,还要自己手动去创建

      

      站点管理页面做好了, 接下来就要做的页面了.对于的设计框架.

      用户在URL中请求的是视图.视图接收请求后进行处理.并将处理的结果返回给请求者.使用视图时需要进行两步操作

      1.定义视图2.配置URLconf

      定义视图

      视图就是一个函数,被定义在的中.视图的第一个参数是类型的对象,包含了所有.视图必须返回,包含返回给请求者的.

      需要导入模块 :

      定义视图函数 : 响应字符串给客户端

      

      配置URLconf

      查找视图的过程 :

      1.请求者在浏览器地址栏中输入URL, 请求到网站.2.网站获取URL信息.3.然后与编写好的URLconf逐条匹配.4.如果匹配成功则调用对应的视图.

      5.如果所有的URLconf都没有匹配成功.则返回404错误.

      

      入口

      

      需要两步完成配置

      1.在中定义2.在中定义

      在中定义

      django.urls 中的 path() 和 django.conf.urls 中的 url() 都是 Django 中用于 URL 路由的函数,它们的作用是定义 URL 和视图函数之间的映射关系,即当用户访问某个 URL 时,Django 如何将请求发送给对应的视图函数来处理。

      两者的区别如下:

      path() 函数是 Django 2.0 版本引入的新函数,它更加直观和易用,支持使用 str 类型的路由,可以通过等转换器来定义动态参数,而且不再需要使用正则表达式来匹配 URL,大大简化了 URL 配置的过程。例如:

      需要注意的是,在 Django 3.1 版本以后,url() 函数已经被标记为过时,建议使用 path() 函数来进行 URL 配置。因此,如果使用较新版本的 Django,应该尽量使用 path() 函数来定义 URL 路由。

      看下path()函数用法:

      在 Django 中,path() 函数是用来定义 URL 路由的。它的语法如下:

      其中:

      route:是一个字符串,用来匹配 URL,可以包含变量,例如:'articles/<int:pk>/'。当有请求发生时,Django 会尝试将该字符串与请求的 URL 进行匹配,如果匹配成功,就会调用对应的 view 函数处理该请求。view:是一个视图函数或者一个类视图,用来处理匹配成功的请求,并返回一个响应对象。kwargs:是一个可选的字典,包含额外的关键字参数,传递给视图函数。name:是一个可选的字符串,用来给 URL 路由起一个名称,方便在模板中使用。

      path() 函数支持的 URL 模式有以下几种:

      静态 URL 模式,例如 ‘articles/’。带参数的 URL 模式,例如 'articles/<int:pk>/',其中 <int:pk> 表示一个整数类型的参数。带参数的 URL 模式,例如 'articles/<slug:slug>/',其中 <slug:slug> 表示一个字符串类型的参数,但是只能包含 ASCII 字符、数字、下划线或连字符。带可选参数的 URL 模式,例如 'articles/<int:pk>/<str:slug>/',其中 <str:slug> 表示一个可选的字符串类型的参数。匹配任意字符的 URL 模式,例如 'articles/<path:path>/',其中 <path:path> 可以匹配包含 / 符号的任意字符串。

      在定义 URL 路由时,可以使用多个 path() 函数来定义不同的路由,并将它们作为列表传递给 urlpatterns 变量。例如:

      上面的代码中,定义了两个 URL 路由,分别对应 /articles/ 和 /articles/int:pk/ 两个 URL。其中,views.article_list 和 views.article_detail 分别是处理请求的视图函数。

      Django2. 0中可以使用 re_path() 方法来兼容 1.x 版本中的 url() 方法,一些正则表达式的规则也可以通过 re_path() 来实现。

      参考资料:django2笔记:路由path语法 | 程序员Barnes的博客

      我们采用的是django2.0所以我们采用path语法

      

      在中定义

      提示:一条包括URL规则、视图两部分

      URL规则使用正则表达式定义.

      视图就是在中定义的视图函数.

      from book import views

      

      url匹配过程

      

      测试:请求访问

      

      总结

      视图处理过程如下图:

      

      使用视图时需要进行两步操作,两步操作不分先后

      配置在中定义视图

      思考 : 网站如何向客户端返回一个漂亮的页面呢?

      提示 :

      漂亮的页面需要、、.可以把这一堆字段串全都写到视图中, 作为的参数,响应给客户端.

      问题 :

      视图部分代码臃肿, 耦合度高.这样定义的字符串是不会出任何效果和错误的.效果无法及时查看.有错也不容易及时发现.

      设想 :

      是否可以有一个专门定义前端页面的地方, 效果可以及时展示,错误可以及时发现,并且可以降低模块间耦合度!

      解决问题 :模板

      设计模式中的,

      在中, 将前端的内容定义在模板中, 然后再把模板交给视图调用, 各种漂亮、炫酷的效果就出现了.

      模板使用步骤

      创建模板2.设置模板查找路径3.模板接收视图传入的数据4.模板处理数据

      创建模板

      在同级目录下创建模板文件夹. 文件夹名称固定写法.在文件夹下, 创建同名文件夹. 例,

      在同名文件夹下创建文件. 例 :

      

      设置模板查找路径

      

      模板接收视图传入的数据

      视图模板加载

      

      模板处理数据

      

      查看模板处理数据成果

      

      展示书籍列表

      需求

      

      实现步骤

      1.创建视图2.创建模板3.配置URLconf

      创建视图

      查询数据库数据构造上下文

      传递上下文到模板

      创建模板

      读取上下文数据构造网页html文档 : 书籍信息以列表样式展示

      

      配置URLconf

      进入中的文件

      

      

      效果

      

      setting配置文件

      BASE_DIR

      代表的是settings.py文件,那么的结果将会是settings.py文件的绝对路径;然后parent取其父目录,两个parent就是向上两层父级目录 ,也就是django-admin创建项目之后的路径。

      

      DEBUG

      调试模式,创建工程后初始值为True,即默认工作在调试模式下。

      作用:

      修改代码文件,程序自动重启

      Django程序出现异常时,向前端显示详细的错误追踪信息,例如

      

      而非调试模式下,仅返回Server Error (500)

      注意:部署线上运行的Django不要运行在调式模式下,记得修改DEBUG=False和ALLOW_HOSTS。

      本地语言与时区

      Django支持本地化处理,即显示语言与时区支持本地化。

      本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化,中国大陆地区使用简体中文,时区使用亚洲/上海时区,注意这里不使用北京时区表示。

      初始化的工程默认语言和时区为英语和UTC标准时区

      将语言和时区修改为中国大陆信息

      静态文件

      项目中的CSS、图片、js都是静态文件。一般会将静态文件放到一个单独的目录中,以方便管理。在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径。静态文件可以放在项目根目录下,也可以放在应用的目录下,由于有些静态文件在项目中是通用的,所以推荐放在项目的根目录下,方便管理。

      为了提供静态文件,需要配置两个参数:

      STATICFILES_DIRS存放查找静态文件的目录STATIC_URL访问静态文件的URL前缀

      示例

      1) 在项目根目录下创建static目录来保存静态文件。

      2) 在bookmanager/settings.py中修改静态文件的两个参数为

      3)此时在static添加的任何静态文件都可以使用网址/static/文件在static中的路径来访问了。

      例如,我们向static目录中添加一个index.html文件,在浏览器中就可以使用127.0.0.1:8099/static/index.html来访问。

      或者我们在static目录中添加了一个子目录和文件book/detail.html,在浏览器中就可以使用127.0.0.1:8099/static/book/detail.html来访问。

      

      

      APP应用配置

      在每个应用目录中都包含了apps.py文件,用于保存该应用的相关信息。

      在创建应用时,Django会向apps.py文件中写入一个该应用的配置类,如

      我们将此类添加到工程settings.py中的INSTALLED_APPS列表中,表明注册安装具备此配置属性的应用。

      AppConfig.name属性表示这个配置类是加载到哪个应用的,每个配置类必须包含此属性,默认自动生成。

      AppConfig.verbose_name属性用于设置该应用的直观可读的名字,此名字在Django提供的Admin管理站点中会显示,如

      

      重点

      模型配置

      数据的增删改

      增: 和

      删: 和

      改: 和

      数据的查询

      基础查询

      F对象和Q对象

      关联查询

      查询集QuerySet

      

      Django默认初始配置使用sqlite数据库,我们现在使用MySQL数据来进行改造,下面是使用sqlite数据库的配置文件。

      使用MySQL数据库首先需要安装驱动程序

      在Django的工程同名子目录的__init__.py文件中添加如下语句

      作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。

      

      修改DATABASES配置信息

      

      在MySQL中创建数据库

      模型类被定义在"应用/models.py"文件中。模型类必须继承自Model类,位于包django.db.models中。

      定义

      在models.py 文件中定义模型类。

      数据库表名

      数据库表名

      模型类如果未指明表名,Django默认以小写app应用名_小写模型类名为数据库表名。

      可通过db_table指明数据库表名。

      关于主键

      django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。

      默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。

      属性命名限制

      不能是python的保留关键字。不允许使用连续的下划线,这是由django的查询方式决定的。

      定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:

      字段类型

      类型说明AutoField自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性BooleanField布尔字段,值为True或FalseNullBooleanField支持Null、True、False三种值CharField字符串,参数max_length表示最大字符个数TextField大文本字段,一般超过4000个字符时使用IntegerField整数DecimalField十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数FloatField浮点数DateField日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误TimeField时间,参数同DateFieldDateTimeField日期时间,参数同DateFieldFileField上传文件字段ImageField继承于FileField,对上传的内容进行校验,确保是有效的图片

      选项

      选项说明null如果为True,表示允许为空,默认值是Falseblank如果为True,则该字段允许为空白,默认值是Falsedb_column字段的名称,如果未指定,则使用属性的名称db_index若值为True, 则在表中会为此字段创建索引,默认值是Falsedefault默认primary_key若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用unique如果为True, 这个字段在表中必须有唯一值,默认值是False

      null是数据库范畴的概念,blank是表单验证范畴的

      外键

      在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models中包含了可选常量:

      CASCADE级联,删除主表数据时连通一起删除外键表中数据

      PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据

      SET_NULL设置为NULL,仅在该字段null=True允许为null时可用

      SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可用

      SET()设置为特定值或者调用特定方法

      DO_NOTHING不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常

      迁移

      迁移是 Django 将你对模型的修改(例如增加一个字段,删除一个模型)应用至数据库架构中的方式。它们被设计的尽可能自动化,但你仍需要知道何时构建和运行迁移,你还需要了解一些常见问题。

      以下是几个常用的与迁移交互的命令,即 Django 处理数据库架构的方式:

      migrate,负责应用和撤销迁移。makemigrations,基于模型的修改创建迁移。sqlmigrate,展示迁移使用的 SQL 语句。showmigrations,列出项目的迁移和迁移的状态。

      你应该将迁移看作是数据库架构的版本控制系统。  负责将模型修改打包进独立的迁移文件中——类似提交修改,而  负责将其应用至数据库。

      每个应用的迁移文件位于该应用的 "migrations" 目录中,他们被设计成应用代码的一部分,与应用代码一起被提交,被发布。你只需在开发机上构建一次,就可以在同事的电脑或测试机上运行同样的迁移而保证结果一致。最后在生产环境运行同样的迁移。

      简单来说就是将模型类同步到数据库中。

      生成迁移文件

      

      同步到数据库中

      

      添加测试数据

      Django的manage工具提供了shell命令,帮助我们配置好当前工程的运行环境(如连接好数据库等),以便可以直接在终端中执行测试python语句。

      通过如下命令进入shell

      

      导入两个模型类,以便后续使用

      增加

      增加数据有两种方法。

      save

      通过创建模型类对象,执行对象的save()方法保存到数据库中。

      

      

      create

      通过模型类.objects.create()保存。

      

      

      修改

      修改更新有两种方法

      save

      修改模型类对象的属性,然后执行save()方法

      

      

      update

      使用模型类.objects.filter().update(),会返回受影响的行数

      删除

      删除有两种方法

      模型类对象delete

      模型类.objects.filter().delete()

      

      

      基础条件查询

      基本查询

      get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常。(pk指的就是主键id)

      all查询多个结果。

      count查询结果数量。

      

      

      过滤查询

      实现SQL中的where功能,包括

      filter过滤出多个结果exclude排除掉符合条件剩下的结果get过滤单一结果

      对于过滤条件的使用,上述三个方法相同,故仅以filter进行讲解。

      过滤条件的表达语法如下:

      相等

      exact:表示判等。

      例:查询编号为1的图书。

      

      模糊查询

      contains:是否包含。

      说明:如果要包含%无需转义,直接写即可。

      例:查询书名包含'传'的图书。

      

      startswith、endswith:以指定值开头或结尾。

      例:查询书名以'部'结尾的图书

      

      以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith.

      空查询

      isnull:是否为null。

      例:查询书名为空的图书。

      

      范围查询

      in:是否包含在范围内。

      例:查询编号为1或3或5的图书

      

      比较查询

      gt大于 (greater then)gte大于等于 (greater then equal)lt小于 (less then)lte小于等于 (less then equal)

      例:查询编号大于3的图书

      

      不等于的运算符,使用exclude()过滤器。

      例:查询编号不等于3的图书

      

      日期查询

      year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。

      例:查询1980年发表的图书。

      

      例:查询1990年1月1日后发表的图书。

       wps的的官网最新下载的地址是什么

      F和Q对象

      F对象

      之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用F对象,被定义在django.db.models中。

      语法如下:

      例:查询阅读量大于等于评论量的图书。

      

      可以在F对象上使用算数运算。

      例:查询阅读量大于2倍评论量的图书。

      

      Q对象

      多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。

      例:查询阅读量大于20,并且编号小于3的图书。

      

      如果需要实现逻辑或or的查询,需要使用Q()对象结合|运算符,Q对象被义在django.db.models中。

      语法如下:

      例:查询阅读量大于20的图书,改写为Q对象如下。

      Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或。

      例:查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现

      

      Q对象前可以使用~操作符,表示非not。

      例:查询编号不等于3的图书。

      

      聚合函数和排序函数

      聚合函数

      使用aggregate()过滤器调用聚合函数。聚合函数包括:Avg平均,Count数量,Max最大,Min最小,Sum求和,被定义在django.db.models中。

      例:查询图书的总阅读量。

      

      注意aggregate的返回值是一个字典类型,格式如下:

      使用count时一般不使用aggregate()过滤器。

      例:查询图书总数。

      注意count函数的返回值是一个数字。

      排序

      使用order_by对结果进行排序

      

      关联查询

      由一到多的访问语法:

      一对应的模型类对象.多对应的模型类名小写_set 例:

      

      由多到一的访问语法:

      多对应的模型类对象.多对应的模型类中的关系类属性名 例:

      

      访问一对应的模型类关联对象的id语法:

      多对应的模型类对象.关联类属性_id

      例:

      

      关联过滤查询

      由多模型类条件查询一模型类数据:

      语法如下:

      注意:如果没有"__运算符"部分,表示等于。

      例:

      查询图书,要求图书人物为"郭靖"

      

      查询图书,要求图书中人物的描述包含"八"

      

      由一模型类条件查询多模型类数据:

      语法如下:

      注意:如果没有"__运算符"部分,表示等于。

      例:

      查询书名为“天龙八部”的所有人物。

      

      查询图书阅读量大于30的所有人物

      

      查询集QerySet

      概念

      Django的ORM中存在查询集的概念。

      查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。

      当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表):

      all():返回所有数据。filter():返回满足条件的数据。exclude():返回满足条件之外的数据。order_by():对结果进行排序。

      对查询集可以再次调用过滤器进行过滤,如

      

      也就意味着查询集可以含有零个、一个或多个过滤器。过滤器基于所给的参数限制查询的结果。

      从SQL的角度讲,查询集与select语句等价,过滤器像where、limit、order by子句。

      判断某一个查询集中是否有数据:

      exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。

      两大特性

      惰性执行

      创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用

      例如,当执行如下语句时,并未进行数据库查询,只是创建了一个查询集books

      继续执行遍历迭代操作后,才真正的进行了数据库的查询

      缓存

      使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。

      情况一:如下是两个查询集,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载。

      

      情况二:经过存储后,可以重用查询集,第二次使用缓存中的数据。

      

      限制查询集

      可以对查询集进行取下标或切片操作,等同于sql中的limit和offset子句。

      注意:不支持负数索引。

      对查询集进行切片后返回一个新的查询集,不会立即执行查询。

      如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。

      示例:获取第1、2项,运行查看。

      

      分页

      Pagination | Django documentation | Django (djangoproject.com)

      

      视图介绍

      视图就是中文件中的函数视图的第一个参数必须为,还可能包含下参数如

      通过正则表达式组获取的位置参数通过正则表达式组获得的关键字参数视图必须返回一个或作为响应

      子对象:  视图负责接受Web请求,进行逻辑处理,返回Web响应给请求者

      响应内容可以是,,,…

      视图处理过程如下图:

      

      使用视图时需要进行两步操作,两步操作不分先后

      配置在中定义视图

      项目准备

      创建项目+创建应用+安装应用+配置模板路径+本地化+mysql数据库+URLconf+视图

      mysql数据库使用之前的book

      URLconf

      中:指定url配置

      项目中:只要不是就匹配成功,包含到应用中的

      应用中:匹配成功就调用中的函数,测试项目逻辑

      视图:测试项目逻辑

      在models.py 文件中定义模型类

      生成迁移文件

      同步到数据库中

      添加测试数据

      

      浏览者通过在浏览器的地址栏中输入网址请求网站对于Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的

      配置URLconf

      1.中

      指定url配置

      2.项目中

      匹配成功后,包含到应用的

      3.应用中

      匹配成功后,调用对应的函数

      路由命名是给你写的路由起一个名字,reverse反解析能给根据名字解析出对应的路由。

      路由命名

      在定义路由的时候,可以为路由命名,方便查找特定视图的具体路径信息。

      1) 在使用include函数定义路由时,可以使用namespace参数定义路由的命名空间,如

      

      命名空间表示,凡是book.urls中定义的路由,均属于namespace指明的book名下。

      命名空间的作用:避免不同应用中的路由使用了相同的名字发生冲突,使用命名空间区别开。

      2) 在定义普通路由时,可以使用name参数指明路由的名字,如

      

      reverse反解析

      使用reverse函数,可以根据路由名称,返回具体的路径,如:

      对于未指明namespace的,reverse(路由name)对于指明namespace的,reverse(命名空间namespace:路由name)

      

      

      PostMan 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件,可以直接去对我们写出来的路由和视图函数进行调试,作为后端程序员是必须要知道的一个工具。

      Postman API Platform官网下载桌面版

      回想一下,利用HTTP协议向服务器传参有几种途径?

      提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取;查询字符串(query string),形如key1=value1&key2=value2;请求体(body)中发送的数据wps官网下载的入口在哪,比如表单数据、json、xml;在http报文的头(header)中。

      URL路径参数

      如果想从URL中获取值,需要在正则表达式中使用,获取值分为两种方式

      位置参数

      参数的位置不能错关键字参数

      参数的位置可以变,跟关键字保持一致即可注意:两种参数的方式不要混合使用,在一个正则表达式中只能使用一种参数方式分别使用以上两种获取URL值的方式提取出

      127.0.0.1:8099/booklist/testPath/1/2/

      位置参数

      应用中

      视图中函数: 参数的位置不能错

      如果将<num1>改为 <int:num1>,会进行类型约束,如果传入参数不为int型报错,相似的有:

      int:接收整数

      str:字符串

      path:可以接收包含"/"的路径

      slug:接收【数字、字母、下划线、中划线】四种字符

      

      

      

       

      关键字参数

      如果,使用path函数并不能满足你匹配URL的要求,那么可以使用re_path函数来使用正则表达式来匹配URL路径中的参数。需要注意在Django中,使用正则表达式来获取分组中的值的语法是,其中 name 是组名,pattern 是要匹配的模式。

      应用中

      其中部分表示为这个参数定义的名称为

      可以是其它名称,起名要做到见名知意

      视图中函数: 参数的位置可以变,跟关键字保持一致即可

      

      

       Django中的QueryDict对象

      HttpRequest对象的属性GET、POST都是QueryDict类型的对象

      与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况

      方法get():根据键获取值

      如果一个键同时拥有多个值将获取最后一个值

      如果键不存在则返回None值,可以设置默认值进行后续处理

      方法getlist():根据键获取值,值以列表返回,可以获取指定键的所有值

      如果键不存在则返回空列表[],可以设置默认值进行后续处理

      查询字符串Query String

      获取请求路径中的查询字符串参数(形如?k1=v1&k2=v2),可以通过request.GET属性获取,返回QueryDict对象。

      

      

      重要:查询字符串不区分请求方式,即假使客户端进行POST方式的请求,依然可以通过request.GET获取请求中的查询字符串数据。

      请求体

      请求体数据格式不固定,可以是表单类型字符串,可以是JSON字符串,可以是XML字符串,应区别对待。

      可以发送请求体数据的请求方式有POST、PUT、PATCH、DELETE。

      Django默认开启了CSRF防护,会对上述请求方式进行CSRF防护验证,在测试时可以关闭CSRF防护机制,方法为在settings.py文件中注释掉CSRF中间件,如:

      

      表单类型 Form Data

      前端发送的表单类型的请求体数据,可以通过request.POST属性获取,返回QueryDict对象。

      

      

      因为浏览器不好发送post请求,所以我们用postman来测试

       WPS office的官网最新的下载的入口的方法

      1填入的路径http://127.0.0.1:8099/booklist/post/

      2是填入的参数

      3是点击发送

      4是结果

      非表单类型 Non-Form Data

      非表单类型的请求体数据,Django无法自动解析,可以通过request.body属性获取最原始的请求体数据,自己按照请求体格式(JSON、XML等)进行解析。request.body返回bytes类型。

      例如要获取请求体中的如下JSON数据

      可以进行如下方法操作:

      

      

      

      请求头

      可以通过request.META属性获取请求头headers中的数据,request.META为字典类型。

      常见的请求头如:

      – The length of the request body (as a string).– The MIME type of the request body.– Acceptable content types for the response.– Acceptable encodings for the response.– Acceptable languages for the response.– The HTTP Host header sent by the client.– The referring page, if any.– The client’s user-agent string.– The query string, as a single (unparsed) string.– The IP address of the client.– The hostname of the client.– The user authenticated by the Web server, if any.– A string such asor.– The hostname of the server.– The port of the server (as a string).

      具体使用如:

      

       

      

      其他常用HttpRequest对象属性

      method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'wps 的官网下载网址(wps office下载官网免费下载)。user:请求的用户对象。path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。

      encoding:一个字符串,表示提交的数据的编码方式。

      如果为None则表示使用浏览器的默认设置,一般为utf-8。这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。

      FILES:一个类似于字典的对象,包含所有的上传文件。

      

      视图在接收请求并处理后,必须返回HttpResponse对象或子对象。HttpRequest对象由Django创建,HttpResponse对象由开发人员创建。

      HttpResponse

      可以使用django.http.HttpResponse来构造响应对象。

      也可通过HttpResponse对象属性来设置响应体、响应体数据类型、状态码:

      content:表示返回的内容。status_code:返回的HTTP响应状态码。

      响应头可以直接将HttpResponse对象当做字典进行响应头键值对的设置:

      示例:

      

      

      

      HttpResponse子类

      Django提供了一系列HttpResponse的子类,可以快速设置状态码

      HttpResponseRedirect 301HttpResponsePermanentRedirect 302HttpResponseNotModified 304HttpResponseBadRequest 400HttpResponseNotFound 404HttpResponseForbidden 403HttpResponseNotAllowed 405HttpResponseGone 410HttpResponseServerError 500

      

      

      JsonResponse

      若要返回json数据,可以使用JsonResponse来构造响应对象,作用:

      帮助我们将数据转换为json字符串设置响应头Content-Type为application/json

      

      redirect重定向

      

      浏览器请求服务器是无状态的。无状态:指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。无状态原因:浏览器与服务器是使用Socket套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的Socket连接,而且服务器也会在处理页面完毕之后销毁页面对象。有时需要保持下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等实现状态保持主要有两种方式:

      在客户端存储信息使用在服务器端存储信息使用

      Cookie

      Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等。服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型记住用户名。

      Cookie是存储在浏览器中的一段纯文本信息,建议不要存储敏感信息如密码,因为电脑上的浏览器可能被其它人使用。

      cookie的工作原理:

      第一次请求过程:

      我们的浏览器第一次请求服务器的时候,不会携带任何cookie信息

      服务器接收到请求之后,发现,请求中没有任何cookie信息

      服务器设置一个cookie,这个cookie设置在应中

      我们的浏览器接收到这个响应之后,发现响应中有cookie信息,浏览器会将cookie信息保存起来

      第二次及其之后的过程

      当我们的浏览器第二次及其之后的请求都会携带cookie信息

      我们的服务器接收到请求之后,会发现请求中携带的cookie信息,这样的话就认识是谁的请求了

      不设置cookie时浏览器控制台cookie情况

      

       

      后端不设置cookie,也会返回一个默认的cookie

      然后我们看看手动设置cookie的情况

      

        会返回默认和自己设置的,访问服务器的时候会带上。

      

      Cookie的特点

      Cookie以键值对的格式进行信息的存储。Cookie基于域名安全,不同域名的Cookie是不能互相访问的,如访问itcast.cn时向浏览器中写了Cookie信息,使用同一浏览器访问baidu.com时,无法访问到itcast.cn写的Cookie信息。当浏览器请求某网站时,会将浏览器存储的跟网站相关的所有Cookie信息提交给网站服务器。

      设置Cookie

      可以通过HttpResponse对象中的set_cookie方法来设置cookie。

      max_age单位为秒,默认为None 。如果是临时cookie,可将max_age设置为None。

      示例:

      读取Cookie

      可以通过HttpResponse对象的COOKIES属性来读取本次请求携带的cookie值。request.COOKIES为字典类型。

      删除Cookie

      可以通过HttpResponse对象中的delete_cookie方法来删除。

      Session

      保存在服务器的数据叫做 session,session需要依赖于cookie,如果浏览器禁用了cookie,则session不能实现。

      session流程:

      第一次请求:

      我们第一次请求的时候可以携带一些信息(用户名/密码) cookie中没有任何信息

      当我们的服务器接收到这个请求之后,进行用户名和密码的验证,验证没有问题可以设置session信息

      在设置session信息的同时(session信息保存在服务器端).服务器会在响应头中设置一个 sessionid 的cookie信息(由服务器自己设置的,不是我们设置的)

      客户端(浏览器)在接收到响应之后,会将cookie信息保存起来(保存 sessionid的信息)

      第二次及其之后的请求:

      第二次及其之后的请求都会携带 session id信息

      当服务器接收到这个请求之后,会获取到sessionid信息,然后进行验证, 验证成功,则可以获取 session信息(session信息保存在服务器端)

      

      启用Session

      Django项目默认启用Session。

      可以在settings.py文件中查看,如图所示

      

      如需禁用session,将上图中的session中间件注释掉即可。

      存储方式

      在settings.py文件中,可以设置session数据的存储方式,可以保存在数据库、本地缓存等。

      数据库

      存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式。

      如果存储在数据库中,需要在项INSTALLED_APPS中安装Session应用。

      

      数据库中的表如图所示

      

      

      由表结构可知,操作Session包括三个数据:键,值,过期时间。

      本地缓存

      存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。

      混合存储

      存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。

      Redis

      在redis中保存session,需要引入第三方扩展,我们可以使用django-redis来解决。

      1) 安装扩展

      2)配置

      在settings.py文件中做如下设置

      Session操作

      通过HttpRequest对象的session属性进行会话的读写操作。

      1) 以键值对的格式写session。

      2)根据键读取值。

      3)清除所有session,在存储中删除值部分。

      4)清除session数据,在存储中删除session的整条数据。

      5)删除session中的指定键及值,在存储中只删除某个键及对应的值。

      6)设置session的有效期

      如果value是一个整数,session将在value秒没有活动后过期。如果value为0,那么用户session的Cookie将在用户的浏览器关闭时过期。如果value为None,那么session有效期将采用系统默认值, 默认为两周,可以通过在settings.py中设置SESSION_COOKIE_AGE来设置全局默认值。

      案列:使用数据库模式

      

      

      不设置session,则控制台没有sessionId;

      

      

      设置session,则控制台有sessionId; 

      访问获取session

      类视图

      思考:一个视图,是否可以处理两种逻辑?比如get和post请求逻辑。

      如何在一个视图中处理get和post请求

      

      注册视图处理get和post请求

      以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。

      类视图使用

      在Django中也可以使用类来定义一个视图,称为类视图。

      使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。如下所示

      类视图的好处:

      代码可读性好类视图相对于函数视图有更高的复用性 , 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可

      类视图原理

      类视图的多继承重写dispatch

      使用面向对象多继承的特性。

      

      中间件

      Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。

      我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。

      中间件的定义方法

      定义一个中间件工厂函数,然后返回一个可以被调用的中间件。

      中间件工厂函数需要接收一个可以调用的get_response对象。

      返回的中间件也是一个可以被调用的对象,并且像视图一样需要接收一个request对象参数,返回一个response对象。

      例如,在book应用中新建一个middleware.py文件,

      定义好中间件后,需要在settings.py 文件中添加注册中间件

      定义一个视图进行测试

      

      注意:Django运行在调试模式下,中间件init部分有可能被调用两次。

      多个中间件的执行顺序

      在请求视图被处理前,中间件由上至下依次执行在请求视图被处理后,中间件由下至上依次执行

      

      示例:

      定义两个中间件

      注册添加两个中间件

      执行结果

      

      配置:

      在工程中创建模板目录templates。

      在settings.py配置文件中修改TEMPLATES配置项的DIRS值:

      定义模板

      在templates目录中新建一个模板文件,如index.html

      模板渲染

      调用模板分为两步骤:

      找到模板 loader.get_template(模板文件在模板目录中的相对路径) -> 返回模板对象

      渲染模板 模板对象.render(context=None, request=None) -> 返回渲染后的html文本字符串 context 为模板变量字典,默认值为None request 为请求对象,默认值为None

      例如,定义一个视图

      Django提供了一个函数render可以简写上述代码。

      render(request对象, 模板文件路径, 模板数据字典)

      模板语法

      模板变量

      变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。

      语法如下:

      {{变量}}

      模板变量可以使python的内建类型,也可以是对象。

      模板语句

      for循环:

      

      if条件:

      

      比较运算符如下:

      布尔运算符如下:

      注意:运算符左右两侧不能紧挨变量或常量,必须有空格。

      

      注释

      单行注释语法如下:

      {#…..#}

      多行注释使用comment标签,语法如下:

      {% coment %}

      ………

      {% endcomment %}

      过滤器

      语法如下:

      使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。如果过滤器需要参数,则使用冒号:传递参数。

      列举几个如下:

      safe,禁用转义,告诉模板这个变量是安全的,可以解释执行

      length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。

      default,默认值,如果变量不存在时则返回默认值。

      date,日期,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:

      Y表示年,格式为4位,y表示两位的年。m表示月,格式为01,02,12等。d表示日, 格式为01,02等。j表示日,格式为1,2等。H表示时,24进制,h表示12进制的时。i表示分,为0-59。s表示秒,为0-59。

      模板继承

      模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。

      父模板

      如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中。

      标签block:用于在父模板中预留区域,留给子模板填充差异性的内容,名字不能相同。 为了更好的可读性,建议给endblock标签写上名字,这个名字与对应的block名字相同。父模板中也可以使用上下文中传递过来的数据。

      子模板

      标签extends:继承,写在子模板文件的第一行。

      

      子模版不用填充父模版中的所有预留区域,如果子模版没有填充,则使用父模版定义的默认值。

      {% extends "父模板路径"%}

      填充父模板中指定名称的预留区域。

      jinja2介绍

      Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,尤其是Flask框架内置的模板语言

      由于django默认模板引擎功能不齐全,速度慢,所以我们也可以在Django中使用jinja2, jinja2宣称比django默认模板引擎快10-20倍。

      Django主流的第三方APP基本上也都同时支持Django默认模板及jinja2,所以要用jinja2也不会有多少障碍。

      安装jinja2模块

      Django配置jinja2

      Django配置jinja2

      

      在项目文件中创建 jinja2_env.py 文件

      在settings.py文件

      遇到问题:

      

      ERRORS:

      ?: (admin.E403) A 'django.template.backends.django.DjangoTemplates' instance must be configured in TEMPLATES in order to use the admin application.

      根据报错提示,应该是 django 自带的 admin 模块需要使用 django 默认模板。

      所以需要保留他自身的默认配置:

      

      如果不想使用他自身的配置给出两种方案:

      第一种去除掉admin 模块:

      修改好上述三处代码之后,就可以正常使用了。

      第二种方法直接建两个模板空间

      jinja2模板的使用绝大多数和Django自带模板一样,不一样有:

      jinja2自定义过滤器

      在jinja2_env.py文件中自定义过滤器

      全拼为,译为跨站请求伪造。指攻击者盗用了你的身份,以你的名义发送恶意请求。

      包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,WPS office的电脑版的下载网站怎么找转账……造成的问题:个人隐私泄露以及财产安全。

      CSRF攻击示意图

      客户端访问服务器时没有同服务器做安全验证

      防止 CSRF 攻击

      步骤

      在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token在用户点击提交的时候,会带上这两个值向后台发起请求后端接受到请求,以会以下几件事件:

      从 cookie中取出 csrf_token从 表单数据中取出来隐藏的 csrf_token 的值进行对比如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

      代码演示

      未进行 csrf 校验的 WebA

      后端代码实现

      前端登录页面代码

      前端转账页面代码

      运行测试,如果在未登录的情况下,不能直接进入转账页面,测试转账是成功的

      攻击网站B的代码

      后端代码实现

      前端代码实现

      运行测试,在用户登录网站A的情况下,点击网站B的按钮,可以实现伪造访问

      在网站A中实现 csrf_token 校验的流程

      导入生成 csrf_token 的函数

      在渲染转账页面的,做以下几件事情:

      生成 csrf_token 的值在返回转账页面的响应里面设置 csrf_token 到 cookie 中将 csrf_token 保存到表单的隐藏字段中

      在转账模板表单中添加 csrf_token 隐藏字段

      运行测试,进入到转账页面之后,查看 cookie 和 html 源代码

      

      在执行转账逻辑之前进行 csrf_token 的校验

      运行测试,用户直接在网站 A 操作没有问题,再去网站B进行操作,发现转账不成功,因为网站 B 获取不到表单中的 csrf_token 的隐藏字段,而且浏览器有同源策略,网站B是获取不到网站A的 cookie 的,所以就解决了跨站请求伪造的问题

      Django默认是开启CSRF的

      

      模板中设置 CSRF 令牌