Django推导 安装等
HTTP协议补充
四大特性:
- 基于请求响应
- 基于TCP/IP协议之上的应用层协议
- 无状态 不能保存用户信息(cookie,session,token)
- 短链接
请求数据格式:
请求首行(请求方式,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推导 安装等的更多相关文章
- Ubuntu14.04 Django Mysql安装部署全过程
Ubuntu14.04 Django Mysql安装部署全过程 一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...
- 跟我一起Django - 01 安装和初始化
跟我一起Django - 01 安装和初始化 python环境 C:\Python27\Lib\site-packages>python --versionPython 2.7.5 安装setu ...
- 【django入门教程】Django的安装和入门
很多初学django的朋友,都不知道如何安装django开发以及django的入门,今天小编就给大家讲讲django入门教程. 注明:python版本为3.3.1.Django版本为1.5.1,操作系 ...
- Linux下Django的安装
1.下载Django.地址:https://www.djangoproject.com/download/ 2.解压3中得到的Django-1.6.2.tar.gz.使用下面的命令进行解压,解压后在当 ...
- Django的安装配置和开发
参考:<Django Web开发指南> Django的安装配置 1.https://www.djangoproject.com/download/下载Django-1.5.1.tar.gz ...
- Django的安装和启动以及第一个工程的建立
---恢复内容开始--- 前提:已经安装了python和Anaconda (windows系统) 在Anaconda安装好之后,其文件夹下有一个叫做Anaconda Prompt的工具,类似windo ...
- Django:安装和启动
最近在学习利用python语言进行web站点开发,使用的框架是Django.这篇博客主要介绍Django的安装和简单使用. 一.Django介绍 Django是一个开源的Web应用框架,由Python ...
- Linux的基础命令, django的安装与使用
一. Linux一些基础指令 cat命令, 用于查看纯文本文件(常用于内容较少的) cat 校花的故事.txt # 查看文件 cat -n 校花的故事.txt # 查看文件并显示行号 -n 显示行号 ...
- centos安装Django之四:安装Django
前面我们学会了centos安装Django之一:安装openssl和centos安装Django之二:pip3安装,centos安装Django之三:安装python,现在我们就可以安装Django了 ...
随机推荐
- 0shell变量
1.定义变量 2.使用变量 3.修改变量的值 4.将命令的结果赋值给变量 5.只读变量 6.删除变量 一.变量 1.定义变量 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时 ...
- 整理C#获取日期显示格式
C#获取当前日期的几种显示格式 有时候需要用一些不常用的日期格式时,总是要去网上查找,很多都是复制粘贴,还不完整.就整理一下. DatetimeTextBox.Text += DateTime.Now ...
- 「CF516D」 Drazil and Morning Exercise
「CF516D」 Drazil and Morning Exercise 传送门 这个 \(f_i\) 显然可以通过树形 \(\texttt{DP}\) 直接求. 然后看到这种差值问题感觉就可以二分转 ...
- subList方法拆分集合问题
subList方法拆分集合问题 分享一个有意思的错误,先看代码 public static void main(String[] args) throws IllegalAccessException ...
- Linux常用命令 day day up系列3
一.命令执行的优先级二.Linux目录结构三.cat--查看文件内容四.more--查看文件内容五.less--查看文件内容六.head.tail--查看文件内容七.wc--统计文件内容八.grep- ...
- ES6新增语法(四)——面向对象
ES6中json的2个变化 简写:名字和值相同时,json可以可以简写 let a=12,b=5; let json = { a, b } console.log(json) // { a:12 , ...
- Java基础之反射总结
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制. ...
- Redis学习——数据结构下
4.集合(集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素.) 1.命令 .集合内操作 1.添加元素 ...
- 【洛谷P1061 Jam的计数法】搜索
分析 超级暴力,在尾部+1,再判断. AC代码 type arr=array[0..27]of longint; var st:string; a:array[0..27]of longint; s, ...
- jvm源码解读--20 结合jvm源码理解 java 设计模式 模板方法
write by 张艳涛 前言: 在学习jvm之前,看过设计模式的书,知道模板方法的设计模式,今天在看java并发编程的艺术里面关于AbstractQueuedSynchronizer 用法,这个就使 ...