04_Web框架之Django一
Web框架之Django一
学习目标和内容
1、能够描述Django的作用
2、能够使用Django创建应用
3、能够使用GET和POST请求方式进行传参
4、能够使用Django的函数式方法定义视图
5、能够进行Django的配置文件修改
6、能够基本使用Django的路由定义
一、Django相关介绍
1、什么是Django
web框架,指为解决一个开放性的问题而设计的具有一定约束性的架构。
一堆类库文件 有组织
是由python编写的,采用MTV模型。
Django官网:The web framework for perfectionists with deadlines | Django
框架的好处:
-
快速开发
-
简单易用
其他常见web框架:flask web.py Tornado
2、应用场景
快速搭建web应用 提供数据接口(API)
CMDB
二、安装部署应用
准备工作:
1、安装python环境 python3以上
2、安装开发工具IDE Pycharm
1、安装Django
1.1、版本的选择
LTS:是长版本支持,一般我们选择都会选择LTS版本的,因为官方支持时间较长。
1.2、安装并创建项目
pip install django==1.11.18
跳转到目录 创建应用 目录根据实际情况选择
django-admin startproject mydjango
2、目录结构
manage.py django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py 负责把URL模式映射到应用程序。
3、创建新应用
使用manage.py文件,创建应用。
python manage.py startapp blog
4、启动Django项目
python manage.py runserver
5、使用PyCharm打开项目

三、Django使用原理
1、MVT模型
Model(模型):负责业务对象与数据库的对象交互(ORM)
提供项目的数据支持
Template(模板):负责如何把页面展示给用户
静态页面(html+css+js) 模板标签(解析为python代码进行业务逻辑处理)
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
调度
2、请求流程
四、Django的请求和响应
1、快速实现
①定义路由 urls.py
②定义视图函数 views.py
·······
③模型数据调用 创建表
④包含模板 加载模板 (html····)
1.1、路由定义

1.2、编写视图
1.3、浏览器访问
到这里,就完成了一个页面请求。
2、请求
Request and response objects | Django 文档 | Django
客户端请求服务器端携带的信息
属性:
HttpRequest.scheme:请求的方式,即http或者是https
HttpRequest.body:请求的主体,返回的是一个字符串
HttpRequest.path:请求的路径,这里的路径是指相对路径,也就是说一个登陆后台页面的请求:http://127.0.0.1:8000/admin 的路径是 /admin
HttpRequest.method:请求方式 POST/GET
HttpRequest.encoding:请求提交的数据的编码方式
HttpRequest.GET:获取get方式表单中或url提交的数据
HttpRequest.POST:获取post方式表单中或url提交的数据
HttpRequest.META:获取的是一个标准的python字典。它包含了所有的HTTP请求信息
方法:
HttpRequest.get_host():请求的地址
HttpRequest.get_port():请求的端口
HttpRequest.get_full_path():请求的完整路径,包括get参数
接收GET方式传值
3、响应
服务器端返回给客户端的信息
属性:
HttpResponse.content:响应内容
HttpResponse.status_code:响应状态码
HttpResponse.content_type:响应类型(默认是:text/html )
4、GET请求传参和接收
Get请求是明文传输,信息附加在url上面。
在HttpRequest对象中,GET属性是django.http.QueryDict 的实例,它是一个自定义的类似字典的类,用来处理同一个键带有多个值。这个类的需求来自某些HTML 表单元素传递多个值给同一个键。
request.GET的QueryDict 在一个正常的请求/响应循环中是不可变的。
例:接收URL通过GET方式传输过来的参数,并打印到页面上
①接收到参数
②通过response返回参数
1、定义路由
2、定义视图函数
③进行参数组合返回给页面显示
5、POST请求传参和接收
POST相对于Get请求是安全的,所有信息附加在表单中。
在HttpRequest对象中,POST属性是django.http.QueryDict 的实例,它是一个自定义的类似字典的类,用来处理同一个键带有多个值。这个类的需求来自某些HTML 表单元素传递多个值给同一个键。
request.POST的QueryDict 在一个正常的请求/响应循环中是不可变的。
例:通过postman(接口调试工具)模拟发送POST请求,传输参数并把参数打印到页面
①postman发送数据
Tip:403 CSRF 禁止访问
解决方案一: 禁止关闭 CSRF 限制
②返回数据信息
常见发送POST请求的方式:
①html表单
②ajax
③curl postman(开发API调试)
④编程语言里的一些操作方法和类 php curl libcurl python requests ulib
6、QueryDict对象
QueryDict常用操作方法:
QueryDict.get(key )
QueryDict.getlist(key)
QueryDict.items()
QueryDict.lists()
五、视图和模板
1、函数视图
以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,但是代码可读性与复用性都不佳(后期会采用类视图)。
定义函数视图就跟定义一个函数是一模一样的,只是函数视图必须要接收一个参数request。
2、模板文件
①定义路由
②定义函数视图
现在已经可以看到输出文字,但是要求是显示返回一个静态页面。需要借助template支持。
③建立templates文件夹和静态资源文件夹static
④把静态页面和静态资源放置到对应的目录
⑤在setting.py配置静态资源
⑥在函数视图中加载页面
render方法调用加载模板方法
render(request,模板名称)
⑦修改页面上的静态资源的访问地址
css js img 图片的路径 加上/static
六、路由
django的路由 可以进行自定义,具有丰富的用法。合理配置路由,对于web应用,具有易用的好处,还可以起到一定的安全作用。
1、URL匹配规则
①从上到下,依次匹配,如果匹配成功就不继续往下匹配了,
②如果匹配失败,继续匹配,直到匹配成功为止,
③如果没有匹配的对应规则,就会报错。
2、常见匹配方式
2.1、完全匹配
2.2、正则匹配
2.3、分组匹配
分组正则匹配 (?p<标签名称>)
标签名称为之后接收的参数名称
3、反向解析URL
在前端页面中表单的提交地址,需要填写完整的URL地址,不利于使用和后期如有改动。
可以使用URL别名的方式来处理。
①原来的前端页面地址
②路由URL定义别名
③模板上进行调用
查看解析效果
4、包含URL模块
在实际业务开发当中,会存在很多应用模块。如果把所有的url路由都定义到同一个文件,会很难进行维护,所有可以进行URL的分文件定义和管理。
①新建一个应用
cmd > python manage.py startapp shop
②在urls.py中导入include,引入应用文件夹里的urls定义
③在对应的应用文件夹建立urls.py文件
④查看
###作业:
1、主机列表模板部署到django项目中使用
2、实现一个用户登录的原理
案例:简单登录原理实现
①定义路由
urls.py定义编写
②编写函数视图加载模板
view.py中定义
③编写模板页面
template文件夹里login.html文件
④处理参数,进行验证判断
修改上面写过的函数视图
相关文章:
04_Web框架之Django一
Web框架之Django一 学习目标和内容 1、能够描述Django的作用 2、能够使用Django创建应用 3、能够使用GET和POST请求方式进行传参 4、能够使用Django的函数式方法定义视图 5、能够进行Django的配置文件修改 6、能够基本使用Django的路由定义 一、Django相关介绍 1、什么是Djan…...
单机架构到分布式架构的演变
目录 1.单机架构 2.应用数据分离架构 3.应用服务集群架构 4.读写分离 / 主从分离架构 5.引入缓存 —— 冷热分离架构 6.垂直分库 7.业务拆分 —— 微服务 8.容器化引入——容器编排架构 总结 1.单机架构 初期,我们需要利用我们精干的技术团队,快…...
1.新入手的32位单片机资源和资料总览
前言: 学了将近1年的linux驱动和uboot,感觉反馈不足,主要是一直在学各种框架,而且也遇到了门槛,比如驱动部分,还不能随心所欲地编程,原因是有些外设的原理还不够深刻、有些复杂的底层驱动的代码…...
jmeter判断’响应断言‘两个变量对象是否相等
1、首先需要设置变量,json、正则、csv文件等变量 2、然后在响应断言中 ①JMeter Variable Name to use —— 输入一个变量,变量名即可 ② 模式匹配规则 ——相等 ③测试模式 ——输入引用的变量命${变量名} (注意这里是需要添加一个测试模式…...
【Linux基础命令使用】
文章目录 一. 操作系统和文件及文件路径介绍二. 基础指令介绍三. 结束语 一. 操作系统和文件及文件路径介绍 什么是操作系统?操作系统是一款进行软硬件资源管理的软件为什么要进行软硬件资源管理?对上提供良好的稳定的运行服务----工具Linux指令和图形化…...
【JNA与C++基本使用示例】
JNA中java与C使用注意事项和代码示例 JNA关系映射表使用案列注意代码示例C代码java代码 JNA关系映射表 使用案列 注意 JNA只支持C方式的dll使用C的char* 作为返回值时,需要返回的变量为malloc分配的地址C的strlen函数只获得除/0以外的字符串长度 代码示例 C代码…...
HttpRunner接口自动化测试框架
简介 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。 项目地址:GitHub - httprunner/httprunner: HttpRunner 是一个开源的 API/UI…...
云计算:Vmware 安装 FreeNAS
目录 一、实验 1.Vmware 安装 FreeNAS 2.配置Web界面 二、问题 1.iSCSI如何限定名称 2.LUN和LVM的区别 一、实验 1.Vmware 安装 FreeNAS (1)环境准备 VMware Workstation 17 FreeNAS相关安装部署镜像: 官网地址: https://download…...
数据库交付运维高级工程师-腾讯云TDSQL
数据库交付运维高级工程师-腾讯云TDSQL上机指导,付费指导,暂定99...
目标检测YOLO实战应用案例100讲-光伏电站热斑检测(续)
目录 2.5 图像重建方法实验及其结果分析 2.5.1 数据集与超参数 2.5.2 结果分析...
jmeter如何循环运行到csv文件最后一行后停止
1、首先在线程组中设置’循环次数‘–勾选永远 2、csv数据文件设置中设置: 遇到文件结束符再次循环?——改为:False 遇到文件结束符停止线程?——改为:True 3、再次运行就会根据文档的行数运行数据 (如果需要在循环控制器中&…...
电路中的屏蔽罩作用及设计
1.1 屏蔽罩作用 1.1.1 屏蔽电子信号,防止外界的干扰或内部向外的辐射: 一般见于通信类电路PCB,主要一个无线通信产品上有的敏感器件、模拟、数字电路、DCDC电源电路,都需屏蔽隔离,是为了不影响其它电路,也有防止其它电…...
CodeBlocks定义异常:multiple definition of 和 first defined here
基于链表实现贪吃蛇案例时候,在CodeBlocks的CPP源文件定义函数和全局变量均报错 异常现象 在**自定义的cpp**文件定义全局变量、对象、函数等均出现重复定义和首次定义 multiple definition of Controller::showCopy() first defined here 异常解决方案 正确代码…...
RHEL7.5编译openssl1.1.1w源码包到rpm包
openssl1.1.1w下载地址 https://www.openssl.org/source/ 安装依赖包 yum -y install curl which make gcc perl perl-WWW-Curl rpm-build wget http://mirrors.aliyun.com/centos-vault/7.5.1804/os/x86_64/Packages/perl-WWW-Curl-4.15-13.el7.x86_64.rpm rpm -ivh pe…...
结构型设计模式(二)装饰器模式 适配器模式
装饰器模式 Decorator 1、什么是装饰器模式 装饰器模式允许通过将对象放入特殊的包装对象中来为原始对象添加新的行为。这种模式是一种结构型模式,因为它通过改变结构来改变被装饰对象的行为。它涉及到一组装饰器类,这些类用来包装具体组件。 2、为什…...
C#数据结构
C#数据结构 常见结构 1、集合 2、线性结构 3、树形结构 4、图形结构 Array/ArrayList/List 特点:内存上连续存储,节约空间,可以索引访问,读取快,增删慢 using System; namespace ArrayApplication {class MyAr…...
代码随想Day39 | 62.不同路径、63. 不同路径 II
62.不同路径 每次向右或者向下走两个选择,定义dp数组dp[i][j] 为到达索引ij的路径和,状态转移公式为 dp[i][j]dp[i-1][j]dp[i][j-1],初始状态的第一行和第一列为1,从左上到右下开始遍历即可。详细代码如下: class Sol…...
Autosar通信实战系列07-Com模块要点及其配置介绍(二)
本文框架 前言1. ComGeneral配置2. ComConfig配置2.1 ComGwMapping2.2 ComIPdus2.3 ComIPduGroups2.4 ComIPduSignals2.5 ComIPduSignalGroups2.6 ComTimeBasis前言 在本系列笔者将结合工作中对通信实战部分的应用经验进一步介绍常用,包括但不限于通信各模块的开发教程,代码…...
DSP捕获输入简单笔记
之前使用stm32的大概原理是: 输入引脚输入一个脉冲,捕获1开始极性捕获,捕获的是从启动捕获功能开始计数,捕获的是当前的计数值; 例如一个脉冲,捕获1捕获上升沿,捕获2捕获下降沿;而两…...
【Java基础】HashMap 原理
文章目录 1、HashMap 设置值的原理2、HashMap 获取值原理3、HashMap Hash优化4、HashMap 寻址优化5、HashMap 是如何解决Hash冲突的?5.1 get数据的时候,如果定位到指定位置的元素是一个链表,怎么办呢?5.2 红黑树 6、数组扩容6.1 数…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...





