2 c/s 和bs架构
3 python中的web框架
a :socket
b:路由跟视图函数匹配关系
c:模板渲染
django: uwsgi/wsgiref
django: a: 用了别人的wsgiref b:自己写的 c:自己写的
flask: a:用了别人的 b:自己写的 c:用了别人的:jinja2
tornado: a 自己写的 b:自己写的 c:自己写的
-特点:1 基于TCP/IP协议之上的应用层协议
2 基于请求-响应模式
3 无状态保存
4 无连接
-请求头:
请求首行 get /?name=sb http/1.1\r\n
key:value\r\n
key:value\r\n
请求体的内容
-响应头:
响应首行 http/1.1 200 ok \r\n
响应头: key:value\r\n
\r\n
响应体: html的代码
-状态码: 1开头(正在处理) 2开头(处理成功) 3开头(重定向) 4开头(客)5开头(服务端)
5 django的安装和简单使用
-安装:1 pip3 install django==1.11.9
2 pycharm 下安装,选择版本号
-使用:
命令创建项目:django-admin startproject 项目名字
创建app:python3 manage.py startapp app01
-文件目录介绍:
-manage.py---项目入口,执行一些命令
-项目名
-settings:全局配置信息
-urls:总路由,请求地址跟视图函数的映射关系
-app名字
-migrations:数据库迁移的记录
-models.py 数据库表模型
-views 视图函数
pytyon3 manage.py runserver 127.0.0.1:8001
python3 manage.py runserver 8006
python3 manage.py runserver
-安装python3.7和django版本1.11.9兼容错误-----解决(逗号)
0基于wsgiref定义自己的web框架
from wsgiref.simple_server import make_server
from url import urls
from views import error
print(env) //请求头切分好 放进一个字典
response("200 OK", [('Content-type', 'text/html')]) //
position = env['PATH_INFO']
func = None
for url in urls:
if position == url[0]:
func = url[1]
break
if func:
response = func(env)
else:
response = error(env)
ser = make_server('127.0.0.1', 8003, run)
ser.serve_forever()
1 decode和encode
data = b'111111'
data = str(data, encoding='utf-8')
print(type(data))
data = bytes(data, encoding='utf-8')
print(type(data))
2 pymysql链接数据库
#拿到数据库链接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', db='lqz', password='admin')
#获得游标,并且查询结果数据是字典格式
cur=conn.cursor(pymysql.cursors.DictCursor)
#执行sql
cur.execute('select * from user')
#获取全部查询结果
cur.execute('select * from user where name=%s and password=%s ',[name,pwd])
dic=cur.fetchall()
3 以后写项目:
1 不要用中文
2 计算机名不能用中文
3 一个工程,就是一个项目
随机推荐
-
U盘安装操作系统
U盘安装操作系统 On 2010 年 4 月 27 日, in IT, by hr 写在前面 本文主要介绍如何使用U盘安装系统,无法使用光驱安装或者不想随身带着光盘,使用这招都很管用,而且备着这样一只 ...
-
将数据集做成VOC2007格式用于Faster-RCNN训练
1.命名 文件夹名VOC2007.图片名六位数字.将数据集相应的替换掉VOC2007中的数据. (Updated development kit, annotated test data ) 2. ...
-
【转载】delete table 和 truncate table 的区别
使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where] 将XS表中的所有行数据删除 delete XS 执行完后,发现X ...
-
angularjs中只显示选中的radio的值
angularjs中,只显示选中的radio的值.主要是相同的radio,name属性值要相同还有ng-model的值要相同,同时要指定value值.这样选中的时候就会在下面的div中显示选中的值了. ...
-
Unieap3.5-Grid翻页不提示修改
<toolbar export="{defaultType:'server'}" paging="{onPagingModified:ssSettleCheck.o ...
-
Windows 回调监控 <;一>;
在x86的体系结构中,我们常用hook关键的系统调用来达到对系统的监控,但是对于x64的结构,因为有PatchGuard的存在,对于一些系统关键点进行hook是很不稳定的,在很大几率上会导致蓝屏的发生 ...
-
[gulp] gulp lint 忽略文件
how does the ignore parameter works in gulp and nodemon? 参考了 前端构建工具gulp入门教程,里面的lint我不需要检查所有js下面的文件,因 ...
-
Sqlserver 原生 MD5 函数(转)
--创建md5函数CREATE FUNCTION [dbo].[MD5](@src varchar(255) )RETURNS varchar(255)ASBEGIN DECLARE @md5 ...
-
团队项目中js冲突
在我们平时的项目中,特别是模块化开发中.经常会遇到一些js冲突问题,特别是当项目复杂到一定程度的时候.比如项目中引入了相当多的类库,框架以后. 那么.我们如何去避免或者解决这类问题呢? 1.避免使用全 ...
-
highcharts 大数据 String+,StringBuilder,String.format运行效率比较
实现String字符串相加的方法有很多,常见的有直接相加,StringBuilder.append和String.format,这三者的运行效率是有差异的,String是final类型的,每次相加都会 ...