前记:
坚持写学习笔记今天是第六天了,今天事情有点多想起来还没写赶快补起来,学习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() ,负责业务逻辑