IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django+python+web开发的思维导图式辅助记忆笔录 -> 正文阅读

[Python知识库]Django+python+web开发的思维导图式辅助记忆笔录

Django背景

2005年发布的django,前身是2003年开始的,一只于Kansas的World online小组在维护一堆报社官网的过程中积累了大量实践后,有意识的整合为快速可定制的CMS系统,2005年从文档到工具链都成熟的时候开始开源发布。

Django的来源决定了它本身就与其他框架不同,这是有先有的实践成功的案例再发布的,这就导致从一开始,它的目的都非常实用务实。

项目流程

1.需求分析

需求分析(包含developer的评审),评审后,将需求转化为系统功能点,评估开发时长,反馈给产品经理/项目经理,设定开发团队ddl,避免无效开发。
理解,各个环节的理解,尤其对需求的理解至关重要,差之毫厘谬以千里。
系统的实现当以满足用户需求为第一要义,无法满足需求的产品也没有开发和维护的必要(现存技术手段允许的前提下)

1.1需求文档

是开发与产品交流的产物。必不可少。中长期项目,文档是必要的,追溯需求,追溯问题。以blog为例:
需求描述:在这里插入图片描述
以此简单的需求描述为例,缺乏细节,仅以此为纲势必会出现与产品的构思不符的东西,从而产生无谓的返工。需求评审和分析是必要的。

1.2需求评审、分析

经验丰富的产品经理来说,做任何需求都需要足够细致,落实到每个功能点,需要原型稿,可通过原型对每一个功能点逐一核对
对技术,评审目的有三:
1.明确所有需求,避免歧义
2.明确技术可行性,避免延期或需求修改
3.确认工期,是否需要分期开发

还是以博客为例。博客需求评审环节如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
评审过后,所有开发都有必要理解产品经理的需求,需求点的作用及背景,通过消化需求点来开发,而不是单纯的用代码翻译需求文档。
用户需求第一,技术复杂度第二。有了详实的需求列表后,在进行功能分析

功能分析

根据需求列表,推导,博客所需功能点如下:
在这里插入图片描述
在这里插入图片描述

模块划分

有了足够细致的功能列表,开发应当能确定做出什么样的功能来,但还需要有人来整体梳理,把相关的功整理成一个模块,抽象出实体
这个过程就需要建模,建立系统模型及数据模型。可以用到UML,统一建模语言。常用建模方法,通过UML画例图,整理需求,然后画出序列图,整理系统各模块交互逻辑,最后通过模型来实现。除此以外,针对数据模型部分,需要先画出ER图,entity Relationship Diagram,实体关系图,来理清楚不同数据模型之间的关系。好的ER工具可以直接生成建表语句及模型代码。
产品经理需要整理出所有的用户需求,输出产品需求文档PRD给开发人员,开发人需要提取出实体以及各模块之间的交互关系。
通过xmind来梳理功能点,拆分成为一个个独立的任务并将其放到Trello的card上或者Jira任务中,方便管理开发进度。
博客为例,实体关系:在这里插入图片描述
梳理清楚后,通过在线ER工具,将结构化出来,可以通过PonyORM,是python的一个库,提供的在线工具来画出对象实体模型:
在这里插入图片描述
接下来做的才是真正的模块划分,之前是更清晰的了解需求实体及关系,这里需要对模块和模块之间解耦,对于同时的多人协作项目来说,可以分配独立模块进行开发。
譬如,用户端功能可以分为下四类:
在这里插入图片描述
管理后台的功能分为下两类:
在这里插入图片描述实际上从开发角度说,管理后台在模块划分的时候还可以进行横向活纵向划分
横向是指按照模型层业务层页面曾划分任务,每个模块是一个独立的层,好处是每一层只涉及当前层的操作,比如模型models都是在做跟数据库交互的工作,缺点是相互之有依赖,需要先行定好接口才能开发。
纵向就是把文章管理的部分,模型业务和页面划分到一起,按照业务的方式划分,好处是每块内容相互独立,没有依赖,缺点是每个模块都有人是做的从前到后的开发。
在这里插入图片描述

2.WSGI-Web框架基础

WSGI, Web Server Gateway Interface ,web服务器网关接口。python定义的网管协议,规定了web server如何与app交互。
协议目的,包正在python种,所有web server程序,能通过统一的协议跟web框架,进行交互。理解WSGI的运作非常重要,python大部分web框架实现了此协议,也是用WSGI来部署

2.1 简单的web server

了解WSGI前,先看socket的web服务代码,通过监听本地8000端口,接收客户端发来的数据,返回对应的HTTP响应:

import socket

EOL1 = b'\n\n'
EOL2 = b'\n\r\n'
body = '''Hello, world <h1> from 鸡蛋仔 </h1>'''
response_params = [
	'HTTP/1.0 200 OK',
	'Date: Sun, 3 March 2022 01:01:01 GMT',
	'Content-Type: text/plain; charset = utf-8',
	'Content-Length: {}\r\n'.format(len(body.encode())),
	body,
]
response = '\r\n'.join(response_params)

def handle_connection(conn, addr):
	request = b""
	while EOL1 not in request and EOL2 not in request:
		request +=conn.recv(1024)
	print(request)
	conn.send(response.encode())
	conn.close()

def main():
	#AF用于服务器之间的完了过通信,stream用于基于tcp的流式socket通信
	serversocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
	serversocket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
	serversocket.bind(('127.0.0.1',8000))
	serversocket.listen(5)#最大排队数量
	print('http://127.0.0.1:8000')

	try:
		while True:
			conn, address = serversocket.accept()
			handle_connection(conn, address)
	finally:
		serversocket.close()

if __name__=='_main_':
	main()

(未完待续)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:58:23  更:2022-03-06 12:59:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:18:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码