Python全栈开发笔记

本文内容为慕课网Python全栈案例入门课程笔记,点击跳转课程页面

后端

Python web框架
  • flask 简单轻量,灵活性大,创建于2010
  • django 简单,比flask重,灵活性不如flask,创建于2006
  • web.py 简单轻量,不再维护,创建于2008

web应用开发流程

  1. 产品分析: 用户需求,市场调研
  2. 技术选型: 前端,后端,数据库,业务框架(大数据,直播)
  3. 开发实现: 前后端开发,测试
  4. 生产上线: 部署,升级,峰值处理,成本优化,警报处理

Python基础

常用数据类型
  • 字符串:str,unicode
    python3.x只有str
  • 列表:list 可变列表, tuple 不可变列表, set 唯一列表
    tuple内的元素是不变的
  • 字典:dict
    key —> value映射,数据量大可用redis数据库
生成器

generator

# 一次性产生10个元素的数组,占内存
for i in range(10)
	print i
	
#xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器,依次产生1,2,3...节省内存
for i in xrange(10) #
	print i
迭代器

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter()next()
字符串str,列表list或元组tuple对象都可用于创建迭代器:

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
# 可以使用常规for语句进行遍历:
for x in it:
    print (x, end=" ")
切片
>>> list = range(10)
>>>> list
[0,1,2,3,4,5,6,7,8,9]
>>> list[5 : 7]    # 切片,第5-6个位置
[5, 6]
>>> list[-2 : ]    # 倒数第二个位置到最后
[8, 9]
函数
  • def 自定义函数
  • lambda 匿名函数
    lambda [arg1 [,arg2,.....argn]]:expression
    >>> sum = lambda arg1, arg2: arg1 + arg2
    >>> print ("相加后的值为 : ", sum( 10, 20 ))
	相加后的值为 :  30
  • functools.partial 函数封装
  • functools.wraps 装饰器

python中函数像变量一样,可作为参数传入另一个函数:
在这里插入图片描述

列表 / 字典推导式
  • 列表推导式可以方便地由a_list生成新的列表b_list
  • 字典推导式可以方便地由列表a_liststring.letters生成新的字典b_dict
    在这里插入图片描述
列表 / 字典解析式
  • 使用enumerate可以在遍历时方便地获取列表下标index
  • 使用iteritems()迭代器可以方便地遍历字典(key,value),快速又省内存
    在这里插入图片描述

Flask

最简单的web app

from flask import Flask
app = Flask(__name__) ### 生成一个web app对象

@app.route('/')  ### 注册一个url,当请求url+'/'这个网址时,执行hello_world函数
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
	app.run()     ### run(host=None, port=None, debug=None, **options)
				  ### 默认host: 127.0.0.1
				  ### 默认port: 5000

调试flask应用

  • 设置app.run(debug=True)
  • Python打印log,前端页面打印log(开发者模式)
  • 本地开发可以使用断点调试

图书馆管理系统

在这里插入图片描述
在这里插入图片描述

项目文件

接口与逻辑分开设计

  • views.py: url接口逻辑
    在这里插入图片描述
  • logic.py: 逻辑处理
    在这里插入图片描述
  • run.py: 应用发布
    在这里插入图片描述

前端

前端开发三把瑞士军刀:

  • HTML 超文本标记语言 HyperText Markup Language
    一种标记语言,用标记标签描述网页(静态网页)
  • CSS 层叠样式表 Cascading Style Sheets
    样式定义如何显示HTML元素,大小,形状等
    样式表可内置于HTML文件中,但专业的做法是独立存放
  • JS JavaScript
    一种轻量级的高级编程语言
    服务于网页交互,生成动态网页
    同CSS一样,JS可嵌入在HTML文件中,但专业的做法是单独存放

在这里插入图片描述
补充

  • jQuery
    jQuery是一个轻量级的"写的少,做的多"的JavaScript库。是目前最流行的 JS 框架,而且提供了大量的扩展。jQuery 极大地简化了 JavaScript 编程.
  • bootstrap
    Bootstrap来自 Twitter,是基于HTML5和CSS3开发的CSS框架,它在jQuery的基础上进行了更为个性化的完善,形成一套自己独有的网站风格,并兼容大部分jQuery插件,可以方便地使用预定义的各种CSS元素和样式

  • JSP java服务器页面 Java Server Pages
    JSP是为了简化Servlet的工作出现的替代品,Servlet输出HTML非常困难(需要一行一行print),JSP就是替代Servlet输出HTML的。jsp更注重前端显示,servlet更注重模型和业务逻辑.简单地说,jsp就是在html里面写java代码,servlet就是在java里面写html代码,其实jsp经过容器解释之后就是servlet.
    MVC模式在Web开发中的好处是非常明显,它规避了JSP与Servlet各自的短板,Servlet只负责业务逻辑而不会通过out.append()动态生成HTML代码;JSP中也不会充斥着大量的业务代码。这大大提高了代码的可读性和可维护性。

  • Ajax Asynchronous JavaScript + XML
    异步JavaScript和XML,Ajax是一种技术方案,但并不是一种新技术。它依赖现有的CSS/HTML/JavaScript,而其中最核心的依赖是浏览器提供的XMLHttpRequest对象,是这个对象使得浏览器可以发出HTTP请求与接收HTTP响应。实现了在页面不刷新个情况下和服务器进行数据交互

  • Grunt
    是一个前端自动化工具,提高工作效率.Grunt可以帮助你处理需要重复执行的压缩,编译,单元测试,代码检查以及打包发布等任务.

  • Node.js
    是一种通过JavaScript语言开发web服务端应用的框架,简单地说就是运行在服务端的 JavaScript。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
    如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择。当然,如果你是后端程序员,想部署一些高性能的服务,那么学习Node.js也是一个非常好的选择。

简单的例子

显示当前时间,刷新页面更新时间
在这里插入图片描述
对应的.html文件
在这里插入图片描述
<head>定义了当前网页在浏览器标签栏的标题,编码格式,当前页面css,js资源下载链接
<body>定义了网页中显示的元素
<script>js脚本,定义动态内容,这里每刷新一次更新一次显示时间

调试

chrome --> F12 --> Console
输入

>>> a = document.getElementById("time")
>>> a.textContent = " hello world "
 " hello world "

网页内容会跟着改变

复杂一点的例子

点击开始显示当前实时时间,点击停止时间暂停更新
颜色,布局:居中显示,设置字体颜色
在这里插入图片描述

  • .html文件
    <head>下新定义了.css和.js文件位置
    <button>新定义了点击事件
    在这里插入图片描述
  • .css文件
    id选择器:#id { 属性 }
    在这里插入图片描述
  • .js文件
    业务逻辑
    在这里插入图片描述

前后端分离

职责分离,架构分离
前后端分开开发,各自持续集成,分离上线
前后端协作依靠配置文件
注意区别全栈工程师前后端分离前的web工程师

实践:DashBoard可视化

点击获取项目源码

应用设计

在这里插入图片描述
在这里插入图片描述
项目文件结构:
在这里插入图片描述

python应用发布工具

CI / CD 持续集成,持续部署

  1. setup.py打包至pip公共仓库, 通过pip安装 / 卸载
  2. github hooks, travis 轻量,适合中小型项目
  3. jenkins 较重,适合中大型项目
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值