美文网首页程序员
1.初始化——Flask从制作到起飞,零件级颗粒度制造

1.初始化——Flask从制作到起飞,零件级颗粒度制造

作者: Sisyphus235 | 来源:发表于2018-12-23 19:19 被阅读0次

写在前面的话:
作者是一名终身学习者,横跨环境、教育和IT三个行业。
IT是当前正在精进的行业,作者相信专业精神,崇尚知行合一。
作者以这个系列文章向每一个脚踏实地的web开发者致敬,希望能写出高度实用又有深度的文章帮路上的你清除障碍,欢迎你的指正和技术交流。

1.Github

首先在github上创建一个repository,名字是FlaskTemplate。接下来找到一个本地路径初始化项目,例如放在home下:

$ cd ~  # 进入home目录
$ git clone git@github.com:Sisyphus235/FlaskTemplate.git  # 拉取线上开源项目

检查初始化状态

$ cd FlaskTemplate  # 进入项目路径
$ git remote -v  # 检查git远程源
origin  git@github.com:Sisyphus235/FlaskTemplate.git (fetch)
origin  git@github.com:Sisyphus235/FlaskTemplate.git (push)
# origin是git remote的名字,后面是git remote的地址

2.Virtual Environment

接着为项目配置虚拟环境,与本机其他环境隔离,好处是方便做包管理工作,项目配置与本机解耦合,方便未来项目部署。

$ virtualenv venv --python=python3  # 用python3创建一个虚拟环境,名字是venv

检查创建结果,使用pycharm打开项目,在FlaskTemplate中会出现venv的directory,接着在Pycharm-Preferences-Project:FlaskTemplate-Project Interpreter中点击设置的按钮ADD。


image

选择Virtualenv Environment中的Existing environment,在其中找到刚刚创建路径下的venv,确认。


image
检查虚拟环境的IDE配置,在pycharm的terminal中验证:
(venv) ➜  FlaskTemplate git:(master) ✗ which python
~/FlaskTemplate/venv/bin/python  # 路径在FlaskTemplate的venv下面是正确的

3.Flask Initiation

然后实现最简单的Flask代码。

  • 安装flask package
    在pycharm的terminal中安装flask
(venv) ➜  FlaskTemplate git:(master) ✗ pip install flask
Installing collected packages: MarkupSafe, Jinja2, itsdangerous, Werkzeug, click, flask
Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0
  • 在FlaskTemplate根路径下创建core.py文件,最短代码实现一个web server。core.py的代码如下
- FlaskTemplate
    - venv
    - core.py
    - README.md  # 创建git仓库时选择生成的说明文档
# 下面这行是shebang,用来避免编码错误,例如如果一行字符超过1024byte,在没有注明解码方式的时候,python默认会截取1024byte,如果刚好末位碰到utf8中间的位置,会报错。
# -*- coding: utf8 -*-

# 最核心的服务导入,Flask提供后端服务
from flask import Flask

# 通过Flask实例化一个app,后端服务都是在这个实例的功能下实现的
app = Flask(__name__)


# 向app添加一个路由,路径是"/",这里是根目录,所以定义了一个index页面,页面显示一句提示
@app.route('/')
def index():
    return "<h1>This is an index page.<h1/>"

# 最短小服务的启动位置,app启动run方法,在localhost下的5000端口以debug模式启动
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

image

注意,访问服务的时候不要使用0.0.0.0:5000,而要使用localhost:5000或者127.0.0.1:5000。
127.0.0.1是一个"fake" network adapter,只接受相同host的请求,也就是只接受本地连接。
localhost一般是127.0.0.1的hostname,在/etc/hosts下设置(Linux or Mac)
0.0.0.0有多重含义,这里的意思是"listen on every available network interface"。
也就是说,代码中app.run的host如果改成127.0.0.1在这里也是可以启动的。

查看本机的hostanme方法如下:

$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost

4.Future

提交代码,一般推荐使用pull request的方法来协作,方便code review。这里是一个独立项目,直接推送到github的master分支。

  • 设置gitignore文件
    有些文件是本地使用的,不应该放入git的文件版本管理系统,例如上面生成的虚拟环境。
    在根目录下新建.gitignore
- FlaskTemplate
    - venv
    - core.py
    - README.md  # 创建git仓库时选择生成的说明文档
    - .gitignore  # 非git版本管理文件
#pycharm
.idea/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# dotenv
.env

# virtualenv
.venv
venv/
ENV/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
  • 提交.gitignore
    这里要注意,不要直接提交前面写好的代码,不然venv等不希望进入git版本管理的代码会被记录,要写提交.gitignore文件。
$ git status  # 查看当前文件版本情况
$ git add .gitignore  # 将.gitignore加入版本管理
$ git commit -m "add .gitignore"  # 提交.gitignore设置
  • 提交其他代码
$ git status  # 查看当前文件版本情况
$ git add core.py  # 将.gitignore加入版本管理
$ git commit -m "develop simplest flask server"  # 提交.gitignore设置
  • 同步本地开发到github
$ git push orign master -f  # 将本地master分支强制推送到origin远程源并覆盖

至此,一个最简洁的flask server完成,后续文章会在此基础上不断模块化,增加功能,并探索更科学的web server架构。

相关文章

网友评论

    本文标题:1.初始化——Flask从制作到起飞,零件级颗粒度制造

    本文链接:https://www.haomeiwen.com/subject/aoonkqtx.html