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(包含GETPOSTPUT、DELETE等请求)

Flask:

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()  ,负责业务逻辑

 

原文地址:https://www.cnblogs.com/xussi/p/9065073.html