MON.初识 Django

MON.初识 Django

纯手撸 Web 框架

HTTP 协议
"""
网络协议
HTTP 协议         明文传输数据
HTTPS 协议        密文传输数据
websocket 协议    密文传输数据

四大特性
	1、基于请求响应
	2、基于 TCP、IP 作用于应用层之上的协议
	3、无状态
	3、短/长链接
	
数据格式
	请求首行
	请求头
	请求体
	
响应状态码
	1xx
	2xx		200
	3xx		301、302	
	4xx		403、404
	5xx		500
"""

1.socket 代码需要我们自己写
2.HTTP 格式的数据自己处理(只能拿到用户输入的路由)

import socket


server = socket.socket()  # 默认为 socket.AF_INET, socket.SOCK_STREAM, 即默认为 TCP 协议

# 绑定本地回环地址
server.bind(('127.0.0.1', 8080))

# 建立半连接池
server.listen(5)

# 建立链接循环
while True:
    conn, addr = server.accept()
    # noinspection PyBroadException
    try:
        # 获取数据
        data = conn.recv(1024)

        # 判断数据是否为空
        if len(data) == 0:
            break
    
        data = data.decode('utf-8')

        if data == 'exit':
            break

        conn.send(b'HTTP/1.1 200 OK\r\n\r\n')
        current_path = data.split(' ')[1]  # 用以获取不同的后缀

        if current_path == '/index':
            with open(r'01.html', 'rb') as f:
                conn.send(f.read())

        elif current_path == '/login':
            conn.send(b'Hello Baby~')

        conn.send(b'hello web')
    except Exception:  # 抛出异常
        break
    conn.close()

补充
业务状态码
		eg:
  			1.用户名不存在
    		2.密码错误
      		json.dump({})
        	
          def index():
          		 user_dic = {'code': 1001, 'msg': '验证码错误''data': []}
          def index():
               user_dic = {'code': 1002, 'msg': '用户名不存在''data': []}
          def index():
               user_dic = {'code': 1003, 'msg': '密码错误''data': []}
      	3.验证码错误
        	- 随机生成
          - 校验验证码
          	-- 存入MySQL,表结构(限制次数)
            	--- id、code、phone、create_time
            -- 存入 readis(不限制次数)
            	--- 存入 session

基于 Wsgiref 模块

1.封装了 socket 代码
2.处理了 HTTP 格式的数据(大字典)

"""
Web 服务网关接口
	1.请求来的时候自动拆分 HTTP 格式数据并封装成非常方便处理的数据格式
	2.响应结束时将数据再打包,符合 HTTP 格式
"""

根据功能的不同拆分成不同的 py 文件

- urls.py
	路由与视图函数对应关系
  
- views.py(后端业务逻辑)
	业务逻辑视图函数
  	PS:视图函数可以是函数也可以是类
    	- 面向函数式编程
      - 面向对象式编程
  
- templates 模板文件夹
	存储 HTML 文件
  
# 拆分完成后,后续要想添加功能,仅需在 urls.py 和 views.py 中书写对应的代码即可

动静态网页

'静态网页'
页面上的数据是直接写死的,万年不变

'动态网页'
# 根据 HTML 页面内容是写死的还是从后端动态获取的
1.后端获取当前时间
2.从数据库获取数据
	...

"""
如何将后端的数据传递给 HTML 文件(在后段发生的额不再浏览器上)
	1.小白版本 利用字符串的替换
	2.jinja2 模板语法
		即支持给 HTML 传输数据
		还提供了一系列快捷方式操作数据(模板语法)
		
	# jinja2 的模板语法极其贴近 Python 语法,并且有时候比 Python 语法更加简介
"""

# 利用 Wsgiref 模块封装的 Web 框架上 jinja2 模板语法,结合前后端数据库

Python 三大主流 Web 框架

1.Django
	- 特点:大而全,自带功能特别特别多,类似于航空母舰
	
  -	缺点:太过笨重

2.Flask
	-	特点:小而精,自带功能特别特别少,但第三方库特别丰富,类似于美国特种部队,外部支援体系及其庞大

	-	缺点:受制于第三方的开发者,容易出现兼容性问题

3.Tornado
	-	特点:异步非阻塞,支持高并发,甚至可以支持开发游戏服务器

	-	不足之处:入门较难
Web 框架的三大组成部分

A、Socket 部分

B、路由与视图函数对应关系(路由匹配)

C、模板语法

Django 
	- A 外部的,Wsgiref 模块
	- B 内置的
	- C 内置的(相较之下没有 Jinja2 好用,但依然很方便)


Flask
	- A 外部的,Werkzeug(内部依然是 Wsgiref 模块)
	- B 内置的
	- C 外部的(Jinja2)


Tornado
	- A、B、C 均是内置的

注意事项

# 如何让你的计算机能够正常启动 Django 项目
  1.计算机的名称不能有中文
  2.一个 Pycharm 窗口只开一个项目
  3.项目里面所有的文件也尽量不要出现中文(绝大部分的框架都由外国开发,因此没有考虑中文的编码问题)
  4.Python 解释器尽量使用 3.4 - 3.6 之间的版本
  		- 如果项目报错,点击最后一个报错信息,将源码中最后一个','删掉
    
# 安装
	- 在 Pycharm 中第三方库安装 Django
  

Django 基本操作

命令行操作

1.创建 Django 项目
django-admin startproject 项目名
  - manage.py
  - mysite 文件夹
    ·__init__.py
    ·settings.py
    ·urls.py
    ·wsgi.py

2.启动 Django 项目
- "一定要切换到项目目录下 -- cd /项目名"
- Python3 manage.py runserver

3.创建应用
- python3 manage.py startapp app01  # 应用名应该见名知意
应用
"""
Django 是一款专门用来开发 app 的 Web 框架
Django 框架就类似于一所大学
app 就好比大学里的各个学院,负责不同的专业
一个 app 就是一个独立的功能模块
"""

*******创建的应用一定要去配置文件中注册*******
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# 创建应用之后就立即取配置文件注册!!!!!
PS:在用 Pycharm 创建 Django 项目时,Pycharm 可以创建一个 app应用并自动注册
主要文件介绍
- mysite 项目文件夹
	-- mysite 文件夹
		--- settings.py   	  配置文件
		--- urls.py      		  路由与视图函数对应关系(路由层)
		--- wsgi.py						wsgiref 模块(忽略)
	-- manage.py						Django 入口文件
	-- db.sqlite3						Django 自带的小型数据库
	-- app01 文件夹
		--- admin.py					Django 后台管理
		--- app.py						注册使用
		--- migrations 文件夹  数据库迁移记录
		--- modles.py					数据库相关的 - 模型类(ORM)
		--- test.py						测试文件
		--- view.py						视图函数(视图层)

Pycharm 操作

1.New Project 选择 Django 即可

2.启动
	- 命令行启动
  - 在 Pycharm 的终端运行 - python manage.py runserver
  - Pycharm 运行按钮启动
  
3.创建应用
	- 在 Pycharm 提供的终端输入完整命令 -- python3 manage.py startapp app01
  - Pycharm
  	- tools
    	- run manage.py task 提示
      
4.修改端口号及创建 server

命令行与 Pycharm 创建的区别

Pycharm 会自动创建 templates 文件夹,并且在 settings.py 中自动配置相对应的路径,而命令行不会自动创建 templates 文件夹,且需要手动去配置文件中配置路径
	- 'DIRS': [os.path.join(BASE_DIR, 'templates')]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值