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

     

  • 相关阅读:
    第一次冲刺02
    第一次冲刺01
    Android源码分析(十四)PackageManagerService服务分析
    Android源码分析(十三)ActivityManagerService服务分析
    Android源码分析(十二)ServiceManager服务分析
    Serializable和Parcelable之序列化
    ViewPager 相关使用
    AIDL介绍以及简单使用
    Android 四大组件 (五) 第五大组件
    Android 源码分析(十一) 事件传递机制
  • 原文地址:https://www.cnblogs.com/xussi/p/9065073.html
Copyright © 2020-2023  润新知