DAY6-Python学习笔记
前记:
坚持写学习笔记今天是第六天了,今天事情有点多想起来还没写赶快补起来,学习Python已经快一个星期了,大部分的知识点已经跟着廖雪峰老师的教程了解了一下,由于自学能力不强还有很多知识点掌握不牢固,在把教程内容全部总结完了之后还需要一段时间去熟练掌握Python的开发技术,计划是找个Diango项目上手,在这个过程中牢固Python基础知识和了解Diango基本框架,应该是跟着视频教程做把。短期的计划就是这样。但是这几天看了看招聘广告数据结构算法也是很看中的,大一时数据结构学的还行可是现在可能忘得差不多了,还有数据库一直都是没有学好,现在用到的数据库很少也不知道自己到底几斤几两,数据结构算法以及数据库都是以后需要重点学习的方面了,加油!每天都要坚持写随笔!希望自己能坚持两个月
1.访问数据库:
SQLite:是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,SQLite的驱动内置在Python标准库中:
MySQL:是为服务器端设计的数据库,能承受高并发访问
SQLAlchemy:ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上,在Python中,最有名的ORM框架是SQLAlchemy
2.WSGI接口:
Web应用的本质:浏览器发送一个HTTP请求,服务器收到请求,生成一个HTML文档,服务器把HTML文档作为HTTP响应的Body发送给浏览器,浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示
Apache、Nginx、Lighttpd等这些常见的静态服务器:把HTML用文件保存好,用他们接收用户请求,从文件中读取HTML
WSGI接口(Web Server Gateway Interface):统一的接口处理TCP连接、HTTP原始请求和响应格式:
def application(environ, start_response): #environ:一个包含所有HTTP请求信息的dict
对象 start_response:一个发送HTTP响应的函数。
start_response('200 OK', [('Content-Type', 'text/html')]) #发送了HTTP响应的Header,两个参数:HTTP响应码和list
表示的HTTP Header
return [b'<h1>Hello, web!</h1>']
wsgiref模块:Python内置符合WSGI规范的服务器,调用application()
函数
# hello.py
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [b'<h1>Hello, web!</h1>'] # server.py
# 从wsgiref模块导入:
from wsgiref.simple_server import make_server
# 导入我们自己编写的application函数:
from hello import application # 创建一个服务器,IP地址为空,端口是8000,处理函数是application:
httpd = make_server('', 8000, application)
print('Serving HTTP on port 8000...')
# 开始监听HTTP请求:
httpd.serve_forever()
命令行输入python server.py
来启动WSGI服务器 成功!
3.Web框架:
Web App就是写一个WSGI的处理函数,针对每个HTTP请求进行响应和URL(包含GET、POST、PUT、DELETE等请求)
from flask import Flask
from flask import request app = Flask(__name__) @app.route('/', methods=['GET', 'POST'])
def home():
return '<h1>Home</h1>' @app.route('/signin', methods=['GET'])
def signin_form():
return '''<form action="/signin" method="post">
<p><input name="username"></p>
<p><input name="password" type="password"></p>
<p><button type="submit">Sign In</button></p>
</form>''' @app.route('/signin', methods=['POST'])
def signin():
# 需要从request对象读取表单内容:
if request.form['username']=='admin' and request.form['password']=='password':
return '<h3>Hello, admin!</h3>'
return '<h3>Bad username or password.</h3>' if __name__ == '__main__':
app.run()
4.MVC:Model-View-Controller,模型-视图-控制器:
Model: Model是用来传给View,View在替换变量的时候,取出相应的数据.例子中的Model就是dict
:{ 'name': 'Michael' }
View:包含变量{{ name }}
的模板,负责显示逻辑,替换一些变量,最终输出的就是用户看到的HTML。
Controller:处理URL的函数,例中def home() ,负责业务逻辑
DAY6-Python学习笔记的更多相关文章
- 第六周 day6 python学习笔记
1.Python面向对象编程OOP(Object Oriented Programming) 封装:可以隐藏实现细节,使代码模块化 继承:可以扩展已存在的代码模块,可以使代码实现重用 多态:一种接口, ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Pythoner | 你像从前一样的Python学习笔记
Pythoner | 你像从前一样的Python学习笔记 Pythoner
随机推荐
- 取消Ubuntu18.04开机输入密码登录
设置>>详细信息>>用户>>解锁>>(输入密码进行认证)>>{自动登录}选项打开
- 【LeetCode算法题库】Day5:Roman to Integer & Longest Common Prefix & 3Sum
[Q13] Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Valu ...
- Python 利用 BeautifulSoup 爬取网站获取新闻流
0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup: ...
- kubernetes集群部署mysql 8.0
参考:https://blog.csdn.net/sealir/article/details/81177747?utm_source=blogxgwz1 集群内安装mysql并添加相应存储(PVC) ...
- 如何防范和应对Redis勒索,腾讯云教你出招
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB发表于云+社区专栏 9月10日下午,又一起规模化利用Redis未授权访问漏洞攻击数据库的事件发生,此次 ...
- Playfair加密
前面讲的不管是单码加密还是多码加密都属于单图加密,什么是单图加密和多图加密呢,简单来说单图加密就是一个字母加密一个字母,而多图加密就是一个字符组加密一个字符组.比如双图加密就是两个字母加密两个字母,这 ...
- 软件工程-东北师大站-第八次作业(PSP)
1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图
- java判断字符串编码
是 public static String getEncoding(String str){ String encoding = "UTF-8"; try { if (str.e ...
- 查询数据库时mapper报错:It's likely that neither a Result Type nor a Result Map was specified.
因为mapper.xml里把resultType写成了parameterType
- 《校友聊—方便使用之NABCD》
<校友聊—方便使用之NABCD> 方便使用特点的分析与总结: N:由于一些软件的人机交互性很差,人性化性能低,使用不方便,故,鉴于此需求:A:用户可根据系统界面的友好提示一步步进行:B:提 ...