当前位置: 首页 > news >正文

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

框架的好处:

  1. 快速开发

  2. 简单易用

其他常见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.单机架构 初期&#xff0c;我们需要利用我们精干的技术团队&#xff0c;快…...

1.新入手的32位单片机资源和资料总览

前言&#xff1a; 学了将近1年的linux驱动和uboot&#xff0c;感觉反馈不足&#xff0c;主要是一直在学各种框架&#xff0c;而且也遇到了门槛&#xff0c;比如驱动部分&#xff0c;还不能随心所欲地编程&#xff0c;原因是有些外设的原理还不够深刻、有些复杂的底层驱动的代码…...

jmeter判断’响应断言‘两个变量对象是否相等

1、首先需要设置变量&#xff0c;json、正则、csv文件等变量 2、然后在响应断言中 ①JMeter Variable Name to use —— 输入一个变量&#xff0c;变量名即可 ② 模式匹配规则 ——相等 ③测试模式 ——输入引用的变量命${变量名} &#xff08;注意这里是需要添加一个测试模式…...

【Linux基础命令使用】

文章目录 一. 操作系统和文件及文件路径介绍二. 基础指令介绍三. 结束语 一. 操作系统和文件及文件路径介绍 什么是操作系统&#xff1f;操作系统是一款进行软硬件资源管理的软件为什么要进行软硬件资源管理&#xff1f;对上提供良好的稳定的运行服务----工具Linux指令和图形化…...

【JNA与C++基本使用示例】

JNA中java与C使用注意事项和代码示例 JNA关系映射表使用案列注意代码示例C代码java代码 JNA关系映射表 使用案列 注意 JNA只支持C方式的dll使用C的char* 作为返回值时&#xff0c;需要返回的变量为malloc分配的地址C的strlen函数只获得除/0以外的字符串长度 代码示例 C代码…...

HttpRunner接口自动化测试框架

简介 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份 YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。 项目地址&#xff1a;GitHub - httprunner/httprunner: HttpRunner 是一个开源的 API/UI…...

云计算:Vmware 安装 FreeNAS

目录 一、实验 1.Vmware 安装 FreeNAS 2.配置Web界面 二、问题 1.iSCSI如何限定名称 2.LUN和LVM的区别 一、实验 1.Vmware 安装 FreeNAS &#xff08;1&#xff09;环境准备 VMware Workstation 17 FreeNAS相关安装部署镜像: 官网地址&#xff1a; https://download…...

数据库交付运维高级工程师-腾讯云TDSQL

数据库交付运维高级工程师-腾讯云TDSQL上机指导&#xff0c;付费指导&#xff0c;暂定99...

目标检测YOLO实战应用案例100讲-光伏电站热斑检测(续)

目录 2.5 图像重建方法实验及其结果分析 2.5.1 数据集与超参数 2.5.2 结果分析...

jmeter如何循环运行到csv文件最后一行后停止

1、首先在线程组中设置’循环次数‘–勾选永远 2、csv数据文件设置中设置&#xff1a; 遇到文件结束符再次循环?——改为&#xff1a;False 遇到文件结束符停止线程?——改为&#xff1a;True 3、再次运行就会根据文档的行数运行数据 &#xff08;如果需要在循环控制器中&…...

电路中的屏蔽罩作用及设计

1.1 屏蔽罩作用 1.1.1 屏蔽电子信号,防止外界的干扰或内部向外的辐射&#xff1a; 一般见于通信类电路PCB&#xff0c;主要一个无线通信产品上有的敏感器件、模拟、数字电路、DCDC电源电路&#xff0c;都需屏蔽隔离&#xff0c;是为了不影响其它电路&#xff0c;也有防止其它电…...

CodeBlocks定义异常:multiple definition of 和 first defined here

基于链表实现贪吃蛇案例时候&#xff0c;在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、什么是装饰器模式 装饰器模式允许通过将对象放入特殊的包装对象中来为原始对象添加新的行为。这种模式是一种结构型模式&#xff0c;因为它通过改变结构来改变被装饰对象的行为。它涉及到一组装饰器类&#xff0c;这些类用来包装具体组件。 2、为什…...

C#数据结构

C#数据结构 常见结构 1、集合 2、线性结构 3、树形结构 4、图形结构 Array/ArrayList/List 特点&#xff1a;内存上连续存储&#xff0c;节约空间&#xff0c;可以索引访问&#xff0c;读取快&#xff0c;增删慢 using System; namespace ArrayApplication {class MyAr…...

代码随想Day39 | 62.不同路径、63. 不同路径 II

62.不同路径 每次向右或者向下走两个选择&#xff0c;定义dp数组dp[i][j] 为到达索引ij的路径和&#xff0c;状态转移公式为 dp[i][j]dp[i-1][j]dp[i][j-1]&#xff0c;初始状态的第一行和第一列为1&#xff0c;从左上到右下开始遍历即可。详细代码如下&#xff1a; class Sol…...

Autosar通信实战系列07-Com模块要点及其配置介绍(二)

本文框架 前言1. ComGeneral配置2. ComConfig配置2.1 ComGwMapping2.2 ComIPdus2.3 ComIPduGroups2.4 ComIPduSignals2.5 ComIPduSignalGroups2.6 ComTimeBasis前言 在本系列笔者将结合工作中对通信实战部分的应用经验进一步介绍常用,包括但不限于通信各模块的开发教程,代码…...

DSP捕获输入简单笔记

之前使用stm32的大概原理是&#xff1a; 输入引脚输入一个脉冲&#xff0c;捕获1开始极性捕获&#xff0c;捕获的是从启动捕获功能开始计数&#xff0c;捕获的是当前的计数值&#xff1b; 例如一个脉冲&#xff0c;捕获1捕获上升沿&#xff0c;捕获2捕获下降沿&#xff1b;而两…...

【Java基础】HashMap 原理

文章目录 1、HashMap 设置值的原理2、HashMap 获取值原理3、HashMap Hash优化4、HashMap 寻址优化5、HashMap 是如何解决Hash冲突的&#xff1f;5.1 get数据的时候&#xff0c;如果定位到指定位置的元素是一个链表&#xff0c;怎么办呢&#xff1f;5.2 红黑树 6、数组扩容6.1 数…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...