HTTP协议补充

四大特性:

  1. 基于请求响应
  2. 基于TCP/IP协议之上的应用层协议
  3. 无状态 不能保存用户信息(cookie,session,token)
  4. 短链接

请求数据格式:

请求首行(请求方式,http版本)
请求头
\r\n
请求体(post请求有,get没有)

响应数据格式

响应首行(状态码)
响应头
\r\n
响应体

响应状态码(http协议规定)

200 请求成功 OK
404 请求数据不存在
500 服务器内部错误

业务状态码

一般规定一个正确的,只规定200是正确,其他的全部为异常

eg:
1.用户名不存在
2.验证码错误
1)随机生成 458965
2)校验验证码
存入验证码到数据库(MySQL),表结构
id, code, phone create_time
1 123456 110 2021-10-01 10:10:10
2 123457 110 2021-10-01 11:10:10
3 123458 110 2021-10-01 12:10:10
redis也可以存
如果不限制一天当中,不限制发送次数
存到session中 3.密码错误 json.dumps({}) crm,11 财务12,销售13,主站
def index() user_dic = {'code':121001, 'msg':'验证码错误','data':[]}
user_dic = {'code':121002, 'msg':'用户名不存在','data':[]}
user_dic = {'code':121003, 'msg':'密码错误','data':[]} # 如果都正确
user_dic = {'code':200, 'msg':'OK','data':[]}
return JSONrESPONSE(user_dic)
"""

web简易版框架

import socket

server = socket.socket()  # TCP
server.bind(('127.0.0.1', 8080)) server.listen(5) while True:
sock, addr = server.accept() # 接收浏览器发送过来的数据
data = sock.recv(1024) # 如果超过1024的数据,出现粘包现象
print(data) sock.send(b'HTTP/1.1 200 OK \r\n\r\n') data = data.decode('utf-8')
current_path = data.split(' ')[1] # ['GET', '/login/', ''] """
需求:输入不同的后缀,返回不同的内容
1. 知道用户输入的后缀? 2. 做判断,
if path == '/index'
:return 'index'
:return index()
""" # 判断
if current_path == '/index/':
sock.send(b'index')
elif current_path == '/login/':
sock.send(b'login')
else:
# 向浏览器发送数据
sock.send(b'404') sock.close()

wsgiref模块

简易版本

# uwsgi  WSGI wsgiref

from wsgiref.simple_server import make_server

from urls import urls
def run(env, response):
""" :param env: 请求相关的数据
:param response: 响应相关的
:return: 返回值
"""
print(env) # 大字典格式,帮我们封装了http请求过来的所有数据
"""
输入不同的后缀,返回不同的内容
"""
response('200 OK', []) current_path = env.get('PATH_INFO') # /index/
# if current_path == '/index/':
# res = index() # /index/
# # return [b'index']
# return [res.encode('utf-8')]
# elif current_path == '/login/':
# return [b'login']
# return [b'404']
func = None
for url in urls:
# url => ('/index', index),
# current_path => /index /login
if current_path == url[0]: # /index
func = url[1]
break # func => None , index, login reg 函数内存地址
if func:
res = func()
return [res.encode('utf-8')]
# return [res]
else:
return [b'404'] if __name__ == '__main__':
server = make_server('127.0.0.1', 8080, run)
"""
相当于帮我们实现了socket服务端
实时监听 127.0.0.1:8080,
当请求来的时候,全部交给run方法
注意:
run方法有两个参数
""" server.serve_forever() # 启动服务端
内部本质:帮我们写了socket服务端

"""
urls.py => 后缀
views.py => 函数
templates => 存html文件 也叫模板
""" 如果在让你加功能,只需要在urls.py中添加一个路径,然后在views中写逻辑就可以了

Django框架

python中主流框架
1. django
特点:大而全,重量级框架
缺点:笨重
2. flask
特点:小而美,轻量级框架,
缺点:依赖于第三方的模块
3. tornado
特点:异步非阻塞,解决高并发问题
缺点:难

创建Django框架

# 1、cmd命令行创建
1. # django-admin startproject mysite
2.启动项目
必须切到项目目录下,跟manage.py同级目录下面 # python3 manage.py runserver
3.创建应用
Next, start your first app by running python manage.py startapp [app_label]. # python3 manage.py startapp app01 # 2、pycharm创建# 命令行创建和pyacharm创建的区别 1.pycharm多了一个templates文件 2. # 命令行创建 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], } # pycharm创建的 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] } #####################注意事项############################### 创建完应用之后,必须在下面注册应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', 'app01' ] ####################################################

应用介绍

# 项目就相当于是一所大学应用就相当于是二级学院	1. 计算机学院    2. 土木工程    3. 食品工程    ....    eg:    淘宝为例子    	1. 用户相关的   user        2.订单相关		order        3.地址相关		address        4. 商品相关		goods       # 应用名一定要见名知意### 一个项目至少有一个应用

Django推导 安装等的更多相关文章

  1. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

  2. 跟我一起Django - 01 安装和初始化

    跟我一起Django - 01 安装和初始化 python环境 C:\Python27\Lib\site-packages>python --versionPython 2.7.5 安装setu ...

  3. 【django入门教程】Django的安装和入门

    很多初学django的朋友,都不知道如何安装django开发以及django的入门,今天小编就给大家讲讲django入门教程. 注明:python版本为3.3.1.Django版本为1.5.1,操作系 ...

  4. Linux下Django的安装

    1.下载Django.地址:https://www.djangoproject.com/download/ 2.解压3中得到的Django-1.6.2.tar.gz.使用下面的命令进行解压,解压后在当 ...

  5. Django的安装配置和开发

    参考:<Django Web开发指南> Django的安装配置 1.https://www.djangoproject.com/download/下载Django-1.5.1.tar.gz ...

  6. Django的安装和启动以及第一个工程的建立

    ---恢复内容开始--- 前提:已经安装了python和Anaconda (windows系统) 在Anaconda安装好之后,其文件夹下有一个叫做Anaconda Prompt的工具,类似windo ...

  7. Django:安装和启动

    最近在学习利用python语言进行web站点开发,使用的框架是Django.这篇博客主要介绍Django的安装和简单使用. 一.Django介绍 Django是一个开源的Web应用框架,由Python ...

  8. Linux的基础命令, django的安装与使用

    一. Linux一些基础指令 cat命令, 用于查看纯文本文件(常用于内容较少的) cat 校花的故事.txt # 查看文件 cat -n 校花的故事.txt # 查看文件并显示行号 -n 显示行号 ...

  9. centos安装Django之四:安装Django

    前面我们学会了centos安装Django之一:安装openssl和centos安装Django之二:pip3安装,centos安装Django之三:安装python,现在我们就可以安装Django了 ...

随机推荐

  1. mybatis框架的第二天

    一.mybatis的基础crud的操作 先在接口中,写对应的方法名称,返回类型,访问符. 之后在映射配置文件中,写具体的实现 二.mybati中crud的细节 1.模糊查询 这是接口中 这是xml中 ...

  2. php漏洞 md5函数漏洞

    0x01: 背景:php在处理哈希值时,用!=和==来比较的时候,如果哈希字符串以0E开头的时候,哈希值会默认为0,所以两个不同的字符串经过md5加密成哈希值,如果哈希值开头是0E的话,会默认成相等. ...

  3. XCTF csaw2013reversing2

    题目描述:听说运行就能拿到Flag,不过菜鸡运行的结果不知道为什么是乱码 一.先运行看看. 果然乱码. 二.查壳 三.是pe文件,可以拖入od和ida进行动态和静态分析. 1.对主函数进行反编译一下. ...

  4. buu 内涵软件

    一.无壳. 并且是32位程序, 二.用ida静态调试一下. 这里我脑子发热啊,flag已经在眼前,活生生被我放跑了,靠,我直接搜索字符串,然后就一脸懵逼的,进入了很多不知名的函数,就炸了,看了wp才知 ...

  5. asp.net core 视图组件(转)

    介绍视图组件 视图组件是 ASP.NET Core MVC 中的新特性,与局部视图相似,但是它们更加的强大.视图组件不使用模型绑定,只取决于调用它时所提供的数据.视图组件有以下特点: 渲染一个块,而不 ...

  6. 一道内部ctf文件包含题

    拿到题目 在burp里看下 拿到源码 很明显是一道文件包含题目,包含cookie里的值,于是构造Cookie:language=chinese试试   文件变成中文的了,说明中文语言进行了包含并替换 ...

  7. Linux | 配置主机名称

    配置主机名称 为了便于在局域 网中查找某台特定的主机,或者对主机进行区分,除了要有 IP 地址外,还要为主机配置一个主机名,主机之间可以通过这个类似于域名的名称来相互访问. 在 Linux 系统中,主 ...

  8. postgresql安装及配置

    目录 1. 安装 2. PostgrepSQL的简单配置 2.1 修改监听的ip和端口 2.2 修改数据库log相关的参数 2.3 内存参数 3. 数据库的基础操作 3.1 连接数据库控制台 3.2 ...

  9. Selenium启动Firefox示例(python版)

    目前做selenium自动化使用的主流语言分为java和python,前一篇为java版,本篇介绍python实现selenium启动Firefox. 1 #-*- coding:utf-8 -*- ...

  10. react应用(基于react脚手架)

    使用create-react-app创建react应用 react脚手架 1) xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 a. 包含了所有需要的配置 b. 指定好了所有的依赖 ...