Django回顾2

目录

一.HTTP

1.URL介绍

2.格式:

3.补充:

二.web框架

1.什么是框架

2.什么是web框架

3.wsgi协议

基于wsgi协议的web服务器:

4.协议是怎么规定的

三.Django

1.MVC与MTV模型(所有框架其实都遵循MVC架构)

2.主要文件

 3.请求生命周期

四.路由控制

1.什么是路由

2.如何使用

3.path详细使用

4.re_path详细使用

5.反向解析(用在视图函数中,用在模板中)

五.视图层

1.视图函数格式

2.request对象


一.HTTP

1.URL介绍

统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它

2.格式:

协议://IP:端口号(默认80端口)/路径?name=xxx&age=xxx

?之前的是请求路径,?之后的是请求数据部分

示例:

import socketsock=socket.socket()
sock.bind(("127.0.0.1",8808))
sock.listen(5)while 1:print("server waiting.....")conn,addr=sock.accept()data=conn.recv(1024)print("data", data)# 读取html文件with open("login.html","rb") as f:data=f.read()conn.send((b"HTTP/1.1 200 OK\r\nContent-type:text/html\r\n\r\n%s"%data))conn.close()
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="" method="post">用户名 <input type="text" name="user">密码 <input type="password" name="pwd"><input type="submit">
</form></body>
</html>

3.补充:

例:https://www.baidu.com/abc/def

域名(https://www.baidu.com)+路径(/abc/def)

请求一个网址携带数据到后端的三种方式:

1.带在地址栏中:域名+路径+参数

        https://www.baidu.com/abc/def?name=xxx&age=xxx

2.带在请求体中:

        json:后期使用较多

        urlencoded:form表单,默认

        form-data:传文件

3.带在请求头中:

        request.META ------> 取出请求头

二.web框架

1.什么是框架

框架就是别人写好了基础代码,我们只需要在固定位置写固定代码即可实现一个web应用

2.什么是web框架

Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了。浏览器和服务器的是基于HTTP协议进行通信的。也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率

3.wsgi协议

客户端浏览器        ----------------------------->        python、web框架之间通信需要遵循这个协议

发出来的是http请求       符合wsgi协议的web服务器      django、flask、request、reponse

基于wsgi协议的web服务器:

wsgiref:django框架默认用这个(性能低,并发量低,只能测试使用)

uwsgi:C语言写的

gunicorn:python写的

4.协议是怎么规定的

web服务器后面的python框架一定是一个可调用的对象,必须接收两个参数(environ,start_response)  ------>  environ是个字典,里面全是http请求数据

三.Django

1.MVC与MTV模型(所有框架其实都遵循MVC架构)

MVC:

       模型(M):数据层

       视图(V):用户看到的

       控制器(C):逻辑判断

他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求


MTV:

        模型(M):负责业务对象和数据库的关系映射(ORM)

                M就是原来的M
        模板(T):负责如何把页面展示给用户(html)

                T就是原来的V

        视图(V):负责业务逻辑,并在适当的时候调用M和T

                V+路由就是原来的C

2.主要文件

 3.请求生命周期

四.路由控制

1.什么是路由

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行
请求路径和要执行的视图函数的对应关系

2.如何使用

path:准确路径,精准匹配--->以后基本都是path

re_path:就算原来的url--->正则匹配,使用很少

3.path详细使用

path('admin/',login)    等价于:_path(route,view,kwargs=None,name=None)

        

        第一个参数:

                准确路径,字符串

                转换器:'<int:pk>'   '<str:name>'           

        第二个参数:

                视图函数内存地址,不要加括号

        第三个参数:

                kwargs是给视图函数传递默认参数

        第四个参数:

                路径的别名------>后期使用反向解析得到该路径

4.re_path详细使用

跟path除了第一个参数不一样,其他完全一样

第一个参数是正则表达式,后期很少使用,原来使用是为了分组出参数,path通过转换器能完成这个操作,所以正则几乎不用

5.反向解析(用在视图函数中,用在模板中)

没有转换器的情况:

        path('login/',login,name='login')

        res=reverse('login')  # 定义路径传入的name参数对应的字符串

有转换器的情况:

        path('login/<str:name>',login,name='login')

        res=reverse('login',kwargs={name:xxx})  # 定义路径传入的name参数对应的字符串

        生成这种路径:'login/xxx'

五.视图层

1.视图函数格式

def 视图函数(request):return 四件套

2.request对象

它是http请求(数据包---->字符串形式),拆分成了django中的request对象

常用:

       request.path
        request.method
        request.GET
        requets.POST
        requets.body
        request.get_full_path()  # 方法
        request.files   # 前端携带文件过来---》转成了字典,根据文件的名字取到文件对象  

不常用:

        request.cookie
        request.session
        request.content_type  # 提交的编码格式:urlencoded(form表单),json,form-data,text/plain(一般不用,浏览器默认的格式)
        request.META: 请求头中得数据
        user-agent:HTTP_USER_AGENT
        referer:
                客户端ip地址:REMOTE_ADDR
                用户自定义的  
                定义:name=lqz
                取:request.META.get('HTTP_NAME')  # 前面加HTTP_ 把自定义的转成大写
        request.user  # auth
        request.is_ajax()  

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

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

相关文章

别太担心,人类只是把一小部分理性和感性放到了AI里

尽管人工智能&#xff08;AI&#xff09;在许多方面已经取得了重大进展&#xff0c;但它仍然无法完全复制人类的理性和感性。AI目前主要侧重于处理逻辑和分析任务&#xff0c;而人类则具有更复杂的思维能力和情感经验。 人类已经成功地将一些可以数据化和程序化的理性和感性特征…

企业级开发链表思路

项目结构 头文件代码 头文件代码LinkList.h #ifndef LINKLIST_H #define LINKLIST_H #include <stdio.h> #include <stdlib.h> #include <iostream> // 链表小节点 typedef struct LINKBODE {struct LINKBODE* next;}LinkNode; // 遍历的函数指针 typedef …

人工智能|机器学习——感知器算法原理与python实现

感知器算法是一种可以直接得到线性判别函数的线性分类方法&#xff0c;它是基于样本线性可分的要求下使用的。 一、线性可分与线性不可分 为了方便讨论&#xff0c;我们蒋样本增加了以为常数&#xff0c;得到增广样向量 y&#xff08;1;;;...;&#xff09;,则n个样本的集合为&a…

零信任安全:远程浏览器隔离(RBI)的重要性

引言 在当今数字化时代&#xff0c;网络安全已成为个人和企业关注的焦点。随着网络攻击和恶意软件的不断增加&#xff0c;远程浏览器隔离(RBI)SAAS系统变得至关重要。本文将深入探讨远程浏览器隔离系统的重要性&#xff0c;以及它如何帮助用户保护其网络免受恶意软件和网络攻击…

蓝桥杯day02——Fizz Buzz

1、题目 给你一个整数 n &#xff0c;找出从 1 到 n 各个整数的 Fizz Buzz 表示&#xff0c;并用字符串数组 answer&#xff08;下标从 1 开始&#xff09;返回结果&#xff0c;其中&#xff1a; answer[i] "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。answer[i] &…

计算机杂谈系列精讲100篇-【计算机应用】PyTorch部署及分布式训练

目录 C平台PyTorch模型部署流程 1.模型转换 1. 不支持的操作 2. 指定数据类型 2.保存序列化模型 3.C load训练好的模型 4. 执行Script Module PyTorch分布式训练 分布式并行训练概述 Pytorch分布式数据并行 手把手渐进式实战 A. 单机单卡 B. 单机多卡DP C. 多机多卡DDP D. L…

Blender动画导入Three.js

你是否在把 Blender 动画导入你的 ThreeJS 游戏(或项目)中工作时遇到问题? 您的 .glb (glTF) 文件是否正在加载,但没有显示任何内容? 你的骨骼没有正确克隆吗? 如果是这样,请阅读我如何使用 SkeletonUtils.js 解决此问题 1、前提条件 你正在使用 Blender 3.1+(此版本…

mysql 性能排查

mysql 下常见遇到的问题有&#xff0c;mysql连接池耗尽&#xff0c;死锁、慢查、未提交的事务。等等我们可能需要看&#xff1b;我们想要查看的可能有 1.当前连接池连接了哪些客户端&#xff0c;进行了哪些操作 2.当前造成死锁的语句有哪些&#xff0c;是哪个客户端上的&#x…

算法通关第十三关-青铜挑战数学基础问题

数组元素积的符号 描述 : 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。如果 x 是负数&#xff0c;返回 -1 。如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的…

vue3+ts 全局函数和变量的使用

<template><div>{{ $env }}<br />{{ $filters.format("的飞机") }}</div> </template><script setup lang"ts"> import { getCurrentInstance } from "vue"; const app getCurrentInstance(); console.log…

07-学成在线修改/查询课程的基本信息和营销信息

修改/查询单个课程信息 界面原型 第一步: 用户进入课程列表查询页面,点击编辑按钮编辑课程的相关信息 第二步: 进入编辑界面显示出当前编辑课程的信息,其中课程营销信息不是必填项,修改成功后会自动进入课程计划编辑页面 查询课程信息 请求/响应数据模型 使用Http Client测…

11月28日作业

提示并输入一个字符串&#xff0c;统计该字符中大写&#xff0c;小写字母个数&#xff0c;数字个数&#xff0c;空格个数以及其他字符个数&#xff0c;要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {string str;int A0,a0,num0,backspac…

UDS 相关时间参数

文章目录 UDS 全部时间参数UDS 应用层诊断时间参数1、P2 Client P2 Server P2* Client P2* Server 图例2、S3 Client S3 Server 图例 UDS CNA-TP网络层时间参数1、N_As/N_Ar 图例2、N_Bs 图例3、 N_Br 图例4、N_Cs 图例N_Cr 图例 UDS 网络层流控制时间参数 UDS 全部时间参数 UD…

智安网络|探索云安全合规要求:等保2.0时代的新趋势解析

随着信息技术的不断发展和应用的广泛普及&#xff0c;信息安全问题日益凸显&#xff0c;特别是在云计算时代&#xff0c;企业对于云平台的安全保障需求更为迫切。等级保护&#xff08;等保&#xff09;作为我国信息安全的基本要求&#xff0c;已经进入了2.0时代&#xff0c;对于…

深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动

文章目录 前言一、输入系统的基本组成部分二、输入系统相关源码分析1、IMS 构建1.1、SystemServer # startOtherServices()1.2、InputManagerService1.3、NativeInputManager # nativeInit()1.4、NativeInputManager1.5、InputManager1.6、InputDispatcher1.7、InputReader1.8、…

网络安全小白自学

一、网络安全应该怎么学&#xff1f; 1.计算机基础需要过关 这一步跟网安关系暂时不大&#xff0c;是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通&#xff0c;可以与学习其他课程同步进行。 2.渗透技…

2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序

2015年五一杯数学建模 C题 生态文明建设评价问题 原题再现 随着我国经济的迅速发展&#xff0c;生态文明越来越重要&#xff0c;生态文明建设被提到了一个前所未有的高度。党的十八大报告明确提出要大力推进生态文明建设&#xff0c;报告指出“建设生态文明&#xff0c;是关系…

【Python】torch.exp()和 torch.sigmoid()函数详解和示例

本文对torch.exp&#xff08;&#xff09;和 torch.sigmoid&#xff08;&#xff09;函数进行原理和示例讲解&#xff0c;以帮助大家理解和使用。 目录 torch.exp函数原理运行示例 torch.sigmoid&#xff08;&#xff09;函数原理运行示例torch.sigmoid相关知识 结合运行 torc…

2023网络安全产业图谱

1. 前言 2023年7月10日&#xff0c;嘶吼安全产业研究院联合国家网络安全产业园区&#xff08;通州园&#xff09;正式发布《嘶吼2023网络安全产业图谱》。 嘶吼安全产业研究院根据当前网络安全发展规划与趋势发布《嘶吼2023网络安全产业图谱》调研&#xff0c;旨在进一步了解…

Net6.0或Net7.0项目升级到Net8.0 并 消除.Net8中SqlSugar的警告

本文基于NetCore3.1或Net6.0项目升级到Net7.0&#xff0c;参考连接&#xff1a;NetCore3.1或Net6.0项目升级到Net7.0-CSDN博客 所有项目按照此步骤操作一遍&#xff0c;完成后再将所有引用的包&#xff08;即 *.dll&#xff09;更新升级到最新版&#xff08;注意&#xff1a;有…