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文件

④处理参数,进行验证判断

修改上面写过的函数视图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/229663.shtml

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

相关文章

ArrayList vs. LinkedList: Java集合框架的比较与应用

目录 1. ArrayList简介 2. LinkedList简介 3. 内部实现方式 3.1 ArrayList的内部实现 3.2 LinkedList的内部实现 4. 时间复杂度比较 4.1 插入和删除操作 4.2 随机访问操作 5. 内存消耗 5.1 ArrayList的内存消耗 5.2 LinkedList的内存消耗 6. 适用场景 6.1 ArrayLi…

Python:Jupyter

Jupyter是一个开源的交互式计算环境&#xff0c;由Fernando Perez和Brian Granger于2014年创立。它提供了一种方便的方式来展示、共享和探索数据&#xff0c;并且可以与多种编程语言和数据格式进行交互。Jupyter的历史可以追溯到2001年&#xff0c;当时Fernando Perez正在使用P…

将mjpg格式数转化成opencv Mat格式

该博客可以解决如下两个问题&#xff1a; 1、将mjpg格式数据转化成opencv Mat格式 2、v4l2_buffer 格式获取的mjpg格式数据转换成Mat格式。 要将 MJPEG 格式的数据转换为 OpenCV 的 Mat 格式&#xff0c;您可以使用 imdecode 函数。imdecode 函数可以将图像数据解码为 Mat 对象…

基于SSM的图书馆预约座位系统的设计与实现(部署+源码+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SSM的图书馆预约座位…

为什么选择计算机?大数据时代学习计算机的价值探讨

还记得当初自己为什么选择计算机? 计算机是在90年代兴起的专业,那时候的年轻人有驾照、懂外语、懂计算机是很时髦的事情! 当初你问我为什么选择计算机,我笑着回答:“因为我梦想成为神奇的码农!我想像编织魔法一样编写程序,创造出炫酷的虚拟世界!”谁知道,我刚入门的…

OpenCV开发:MacOS源码编译opencv,生成支持java、python、c++各版本依赖库

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它为开发者提供了丰富的工具和函数&#xff0c;用于处理图像和视频数据&#xff0c;以及执行各种计算机视觉任务。 以下是 OpenCV 的一些主要特点和功能&#xff…

常用网安渗透工具及命令(扫目录、解密爆破、漏洞信息搜索)

目录 dirsearch&#xff1a; dirmap&#xff1a; 输入目标 文件读取 ciphey&#xff08;很强的一个自动解密工具&#xff09;&#xff1a; john(破解密码)&#xff1a; whatweb指纹识别&#xff1a; searchsploit&#xff1a; 例1&#xff1a; 例2&#xff1a; 例3&…

Git----学习Git第一步基于 Windows 10 系统和 CentOS7 系统安装 Git

查看原文 文章目录 基于 Windows 10 系统安装 Git 客户端基于 CentOS7 系统安装部署 Git 基于 Windows 10 系统安装 Git 客户端 &#xff08;1&#xff09;打开 git官网 &#xff0c;点击【windows】 &#xff08;2&#xff09;根据自己的电脑选择安装&#xff0c;目前一般w…

一种解决Qt5发布release文件引发的无法定位程序输入点错误的方法

目录 本地环境问题描述分析解决方案 本地环境 本文将不会解释如何利用Qt5编译生成release类型的可执行文件以及如何利用windeployqt生成可执行的依赖库&#xff0c;请自行百度。 环境值操作系统Windows 10 专业版&#xff08;22H2&#xff09;Qt版本Qt 5.15.2Qt Creator版本5.0…

P2P如何使用register_attention_control为UNet的CrossAttention关联AttentionStore

上次的调试到这里了&#xff0c;写完这篇接着看&#xff0c;prepare_latents_ddim_inverted 如何预计算 inversion latents&#xff1a; /home/pgao/yue/FateZero/video_diffusion/pipelines/p2p_ddim_spatial_temporal.py 1. 原始的UNet3D的CrossAttention和SparseCausalAtte…

深度学习中的潜在空间

1 潜在空间定义 Latent Space 潜在空间&#xff1a;Latent &#xff0c;这个词的语义是“隐藏”的意思。“Latent Space 潜在空间”也可以理解为“隐藏的空间”。Latent Space 这一概念是十分重要的&#xff0c;它在“深度学习”领域中处于核心地位&#xff0c;即它是用来学习…

用GitBook制作自己的网页版电子书

用GitBook制作自己的网页版电子书 前言 几年前阅读过其他人用GitBook创建的文档&#xff0c;可以直接在浏览器中打开&#xff0c;页面干净整洁&#xff0c;非常清爽&#xff0c;至今印象深刻。 GitBook非常适合用来为个人或团队制作文档&#xff0c;对于我这种偶尔写博客的人…

和鲸科技CEO范向伟受邀出席港航数据要素流通与生态合作研讨会,谈数据资产入表的战略机会

近日&#xff0c;由上海虹口数字航运创新中心、龙船&#xff08;北京&#xff09;科技有限公司&#xff08;下简称“龙船科技”&#xff09;、华东江苏大数据交易中心联合举办的“港航数据要素流通与生态合作研讨会”圆满落幕&#xff0c;来自港航领域的近百名企业代表共同参与…

【Spark面试】Spark面试题答案

目录 1、spark的有几种部署模式&#xff0c;每种模式特点&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 2、Spark为什么比MapReduce块&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 3、简单说一下hadoop和spark的shuffle相同和差异&#xff1f;&#xff08;☆☆☆☆☆…

黑马头条--day02--2文章详情

一.上传之前的配置 1.上传js和css文件 在minio中创建leadnews桶&#xff0c; 在leadnews下面创建/plugins目录&#xff0c;在该目录下面分别创建js和css目录, 也就是/plugins/css和/plugins/js,向css中上传以下index.css: html {overflow-x: hidden; }#app {position: rel…

kali虚拟机无网络

1.查看虚拟机的网卡模式 在虚拟机设置里&#xff0c;一般选择桥接模式&#xff0c;也可以选择NAT模式。 2、你的IP地址是否写死了&#xff08;设置为静态IP&#xff09; vim编辑模式下的命令&#xff1a; 按a或i进入编辑模式&#xff0c;然后按esc键退出编辑模式&#xff0c;s…

LV.13 D5 uboot概述及SD卡启动盘制作 学习笔记

一、uboot概述 1.1 开发板启动过程 开发板上电后首先运行SOC内部iROM中固化的代码(BL0)&#xff0c;这段代码先对基本的软硬件环境(时钟等...)进行初始化&#xff0c;然后再检测拨码开关位置获取启动方式&#xff0c;然后再将对应存储器中的uboot搬移到内存&#xff0c;然后跳…

mysql复习笔记04(小滴课堂)

mysql的存储引擎介绍 基于表的。 查看数据库支持的引擎&#xff1a; 查看支持的版本&#xff1a; 查看表的引擎&#xff1a; 查看所有表的存储引擎&#xff1a; 也可以修改默认引擎。 这有一张数据量庞大的表。 表是通过执行shell脚本快速创建的. 创建的表. 执行成功后会有个s…

PIG框架学习1——密码模式登录认证获取Token流程

文章目录 O、前言一、总流程概括&#xff1a;二、具体流程分析PIG提供的具体流程图&#xff1a;鉴权请求报文示例0、网关前置处理1、客户端认证处理2、正式接受登录请求3、组装认证对象4、认证管理器进行认证&#xff08;授权认证调用&#xff09;5、认证成功处理器 O、前言 对…

论文阅读:Learning sRGB-to-Raw-RGB De-rendering with Content-Aware Metadata

论文阅读&#xff1a;Learning sRGB-to-Raw-RGB De-rendering with Content-Aware Metadata Abstract 大多数的 Camera ISP 会将 RAW 图经过一系列的处理&#xff0c;变成 sRGB 图像&#xff0c;ISP 的处理中很多模块是非线性的操作&#xff0c;这些操作会破坏环境光照的线性…