Django推导 安装等

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推导 安装等

上一篇:数据结构:哈希表


下一篇:Django项目中xadmin遇到的坑记录