python web学习


Web

http.server

最简单的,一句命令搞定:

# python -m http.server 8001
然后一个常见的文件目录下载竟然就搞定了,太神奇了;

WSGI接口

Web Server Gateway Interface:

from wsgiref.simple_server import make_server


def application(environ, start_response, elseif=None):
    """
    这样已经有模有样了哈,可以区分路由了,但是每个path都要自己if elif转发
    而且如果是post,是不是还得参数转发,
    那么这些重复固定的事儿,web框架肯定可以的
    """
    start_response('200 OK', [('Content-Type', 'text/html')])
    method = environ['REQUEST_METHOD']
    path = environ['PATH_INFO']
    print("method: ", method)
    print("path: ", path)
    if path=="/":
        return handle_home()
    elif path == "/test":
        return handle_test()
    return [b'

404, url is not mapped

'] def handle_home(): return [b'welcome home'] def handle_test(): return [b'test page']

Web框架

  • web.py:一个小巧的Web框架;
  • Flask:轻量级web框架;
  • Django:全能型Web框架;
  • Bottle:和Flask类似的Web框架;
  • Tornado:Facebook的开源异步Web框架。

Web.py

xxx

Flask

haha

Django

Xx

使用模板渲染

在python接口内返回整个html代码显然是不科学的,也是做不到的,这时就需要先定义好前端html模板,然后py接口只return占位符,替换该替换的东东:

React or vue

模板应该使用的是MVC思想,但是这样写前端还是不舒服,不好组件复用,复用自己的模板还好,但是用别人的前端插件作为模板呢,似乎就很难了;

如果用react,很有前端也是面向对象的感觉,可以组件复用,但是结构就和模板不一样了。前后端交互也变成了json格式的数据交互。

Code

https://gitee.com/loveCode666/learnPython/tree/master/study/basic_grammar/web