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 
随机推荐
- Docker数据卷容器
			用户需要在多个容器之间共享一些数据,就可以使用数据卷容器 从阿里云仓库下载镜像(也可以自己制作一个基础进项,比如只有几M的alpine) sudo docker pull registry.cn- ... 
- WordPress函数wp_page_menu详解
			说明 该标签显示带有链接的WordPress页面列表,并且可以选择将 Home(主页)自动显示为列表中的一员.该标签是自定义侧边栏和标题栏的好帮手,同时还可以用在其它模板中. WordPress教程 ... 
- css布局笔记(三)圣杯布局,双飞翼布局
			圣杯布局和双飞翼布局都是三列布局,两边定宽,中间自适应布局,中间栏要在放在文档流前面以优先渲染. 圣杯布局如下 <!-- 圣杯布局 --> <!DOCTYPE html> &l ... 
- 使用Chrome控制台进行3D模型编辑的尝试
			前言:3D模型编辑的核心是对顶点位置和纹理颜色的编辑,这个研究的目的在于寻找一种通过编程方式直接对模型进行编辑的方法,这种编辑方法和时下流行的通过鼠标点选.拖拽进行编辑的方法之间的关系,和前端编程中“ ... 
- Unity扩展编辑器三
			Scene视图是编辑游戏模型的地方,其实它还可以进行编辑,如下图所示,我给Scene视图做了简单的编辑 Scene视图的扩展是基于对象的,意思是你必须在Hierarchy视图中选择一个对象才行,Hie ... 
- Netty源码分析第3章(客户端接入流程)---->第4节: NioSocketChannel注册到selector
			Netty源码分析第三章: 客户端接入流程 第四节: NioSocketChannel注册到selector 我们回到最初的NioMessageUnsafe的read()方法: public void ... 
- Java创建对象的动作分析
			一.Java创建对象时将对象存放到内存的堆中. 创建对象时先执行类成员的初始化,然后才会调用构造函数初始化对象, package com.test.createsort; public class C ... 
- Linux-C语言标准输入输出
			标准 I/O 库(stdio)及其头文件 stdio.h 为底层 I/O 系统调用提供了一个通用的接口.这个库现在已经成为 ANSI 标准 C 的一部分.标准 I/O 库提供了许多复杂的函数用于格式化 ... 
- LeetCode 566. Reshape the Matrix (C++)
			题目: In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a n ... 
- 团队项目M1阶段个人反思
			郑培蕾: 作为项目的PM,我前期的工作还是有很大的缺陷的,因为没有在开发之前对项目进行一个合理的评估,所以后来分配任务的时候就很不科学, 而且任务分配的比较粗糙,没有细化到每个人每天应该做什么,这就导 ... 
