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 数…...
CodeBlocks-25.03 在 Windows 上的完整配置与避坑指南
1. 为什么选择CodeBlocks-25.03? 如果你刚开始学习C/C编程,CodeBlocks绝对是个不错的选择。作为一个开源的集成开发环境(IDE),它轻量级、跨平台,最重要的是完全免费。我十年前刚开始写代码时用的就是CodeBl…...
FPGA分频器避坑指南:为什么你的奇数倍分频时钟占空比总不对?
FPGA奇数倍分频器设计避坑实战:从原理到调试的完整解决方案 在FPGA开发中,时钟分频是最基础却又最容易出问题的环节之一。特别是当我们需要奇数倍分频时,很多工程师都会遇到一个共同的困扰——为什么仿真通过的代码,烧写到FPGA后输…...
应用层缓存的庖丁解牛
“应用层缓存”常被误解为“加个 Redis 那么简单”或“为了快而快”。 但本质上,应用层缓存是用“空间”换“时间”,用“一致性风险”换“系统吞吐量”的终极权衡艺术。 它是数据库(慢、稳、强一致)与用户(快、急、高并…...
BiliTools:革新性开源B站资源下载工具,零基础也能轻松掌握的跨平台解决方案
BiliTools:革新性开源B站资源下载工具,零基础也能轻松掌握的跨平台解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode…...
SLAM Toolbox:从零开始掌握机器人自主定位与建图技术
SLAM Toolbox:从零开始掌握机器人自主定位与建图技术 【免费下载链接】slam_toolbox Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS 项目地址: https://gitcode.com/gh_mirrors/sl/slam_toolbox 在机器人技术飞…...
Minitab单因子方差分析实战:从数据导入到结果解读全流程(附油漆硬度案例)
Minitab单因子方差分析实战:从数据导入到结果解读全流程(附油漆硬度案例) 在工业质量控制和科研实验中,我们常常需要比较不同组别间的均值差异是否具有统计学意义。单因子方差分析(One-Way ANOVA)正是解决这…...
华为交换机Eth-Trunk配置实战:手工与LACP模式全解析(附排错指南)
华为交换机Eth-Trunk深度配置指南:从手工模式到LACP模式的技术实践 在企业网络架构中,带宽瓶颈和单点故障一直是困扰网络工程师的两大难题。记得去年参与某金融数据中心改造时,核心交换机之间的千兆链路在业务高峰时段频繁出现拥塞告警&#…...
Docker实验5
实验五----Docker编排与部署 本实验按 1 个 manager 节点 2 个 worker 节点 的标准流程进行。Docker Swarm 模式是 Docker Engine 内置的集群编排能力,不需要额外安装单独的编排器 **先把一台 Ubuntu 虚拟机装好 Docker,再关机,用 VMware …...
从Sketchfab下载的glTF模型怎么用?手把手教你用Assimp 5.3.1在Visual Studio 2022里解析《蔚蓝档案》角色数据
从Sketchfab下载的glTF模型实战解析:用Assimp 5.3.1提取《蔚蓝档案》角色数据 当你在Sketchfab上发现一个精美的《蔚蓝档案》角色模型,下载glTF格式文件后,接下来该怎么办?本文将带你从零开始,使用Assimp 5.3.1库在Vi…...
程序员的生存法则:适应与创新并重
程序员的生存法则:适应与创新并重 关键词:程序员、生存法则、适应、创新、技术发展 摘要:本文围绕程序员的生存法则展开,着重探讨适应与创新并重的重要性。在快速发展的信息技术领域,程序员既需要适应不断变化的技术环境、市场需求和行业规范,又要具备创新能力,以推动技…...





