125 web开发和初识Django

今日内容

1 web应用

1.用浏览器访问的应用程序
2.优点:
		-不需要客户端
		-更新直接在服务端更新,客户端感知不到
		-跨平台性好
3.缺点:
		-强调浏览器的适用性
		-用户的数据都保存在软件厂商那边

2 bs、cs架构

1.bs:浏览器---服务端(本质还是cs)
2.cs:客户端---服务端

3 手写一个web应用

1.客户端是浏览器,服务器自己写(python)
2.静态页面,动态页面
	-静态页面:内容不会改变,每次看到的数据都一样
	-动态页面:页面的数据会变化,每次访问看到的可能都不一样(数据来源可能是数据库)
import socket

server = socket.socket()
server.bind(('127.0.0.1', 8080))
server.listen(5)

while True:
	conn, addr = server.accept()
	# 接收浏览器传过来的数据
	data = conn.recv(1024)
	print(data)

	# 返回给浏览器数据(不符合http协议,和浏览器有关)
	# conn.send(b'hello world!')

	# 返回符合http协议的数据
	# conn.send(b'HTTP/1.1 200 ok \r\n\r\n hello world')

	# 返回符合html格式的数据
	# conn.send('HTTP/1.1 200 ok \r\n\r\n <h1>Header!</h1>'.encode('utf-8'))

	import time

	ctime = time.time()  # 可能是数据库查询出来的
	# 返回一个html页面,打开文件,转成二进制,send一下
	with open('/Users/moyan/PycharmProjects/python15/讲义/125 web应用/a.html', 'r', encoding='utf-8') as f:
		data = f.read().replace('{
    
    {time}}', str(ctime))


	response = 'HTTP/1.1 200 ok \r\n\r\n %s' % data
	conn.send(response.encode('utf-8'))
	conn.close()

4 http协议

1. HTTP协议:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议
2. 应用层的协议
3. http协议特性(***):
  	-1 基于tcp/ip之上的应用层协议
		-2 基于*请求-响应*模式
    -3 无状态保存(由此引发了很多问题cookie...)
    -4 无连接

    
4.请求协议(浏览器发出来的)(****)
"""
# 请求首行(以第一个\r\n区分的),
# 1请求方式:get/post,2请求地址:/,3协议版本号:HTTP/1.1
b'GET / HTTP/1.1\r\n

# 请求头(key:value形式)
Host: 127.0.0.1:8080\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36\r\n
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n
Sec-Fetch-Site: none\r\n
Sec-Fetch-Mode: navigate\r\n
Sec-Fetch-User: ?1\r\n
Sec-Fetch-Dest: document\r\nA
ccept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n\r\n'

# \r\n\r\n下面的是请求体的内容
....
"""

5.响应协议
"""
# 响应首行 响应协议和版本:HTTP/1.1 响应的状态码和标准:200 ok
HTTP/1.1 200 ok \r\n

# 响应头(key:value形式)
key:value
key:value
\r\n\r\n

#响应体:在浏览器里看到的东西()
<!DOCTYPE html>
<html lang="en">


<h1>内容</h1>
</html>
"""

6.响应状态码
	-1xx:请求正在处理(用户一般看不到)
  -2xx:200(请求成功)
  -3xx:301 302(重定向,访问一个地址,转到另一个地址)
  -4xx:404(客户端错误)
	-5xx:502(服务端错误)

7.url:统一资源定位符
  # 统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
  # 格式:
  http://127.0.0.1:8080
  ftp://xxx	
  协议://IP:端口(80)/路径?name=lqz&age=18
  (?之前的是请求路径,?之后的是请求数据部分)

5 web框架

1 web框架就是在几十行代码基础上扩展出来的,有很多简单方便使用的方法,大大提高了开发效率

6 基于wsgiref 写一个web框架

1 sooket自己写,借助于一个模块,已经实现了socket
2 wsgiref: django默认使用的
3 在web框架上继续开发
	-以后路径都去urls.py中写
  -路径匹配以后执行的函数,都放在views.py
  -数据库相关操作,在models.py中

7 dgango与其他web框架区别

1 python中主流web框架:django、flask、tornado、sanic、fastapi....

socket假设叫:a
路由的映射关系:b
模版渲染:		c

自己写的web框架:a用第三方wsgiref  b自己写的 c自己写的
django: 			a用第三方wsgiref  b自己写的 c自己写的
flask: 				a用第三方 		    b自己写的 c第三方的
tornado: 			a自己写的 				b自己写的 c自己写的

8 django安装与简单使用

1 安装的几种方式
	-pip3 install django==1.11.09 默认装最新版本(3.x)
	-pycharm中-->setting-->解释器-->点+-->选版本,安装

2 装完以后,会多出一个命令:django-admin,
在D:\python38\Scripts 路径下

3 django-admin是用来创建django项目的命令(创建项目就是生成目录,生成一堆py文件)

4 创建项目
	django-admin startproject 项目名
	django-admin startproject my1stdjango
5 创建完成后,用pycharm打开
6 在项目根路径创建app
	python3 manage.py startapp app名字
7 django目录结构:
	-views.py:函数,视图函数
	-urls.py:路径(路由)和视图函数对应关系
	-models.py:表模型(数据库操作相关)	



100 问题
	1 计算机名是中文,项目路径中有中文空格,都可能报错
	2 python 3.8/3.7 对django

作业

1 http状态码有哪些
2 http的请求头和http的响应头有哪些
3 django装好,跑起一个hello world
4 发博客

5扩展:
	-在django 中实现访问index、返回一个页面
	-在django 中实现访问login、返回一个登陆页面(form表单)

猜你喜欢

转载自blog.csdn.net/qq_40808228/article/details/108804000
125
今日推荐