0x001-初始化项目

初始化项目

准备工作

安装python3

下载 点击 安装

创建python虚拟环境

1
2
3
4
5
6
python -m venv venv

# windows
.\venv\Scripts\activate
# mac
source venv/bin/activate

安装相关依赖

1
pip install flask

初始化项目

项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
microapp
--auth
--__init__.py
--forms.py
--views.py
--home
--__init__.py
--forms.py
--views.py
--profile
--__init__.py
--forms.py
--views.py
--templates
--static
__init__.py
common.py
email.py
errors.py
models.py
exceptions.py
test
venv
run.py
config.py

初始化flask

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
import os
import logging
from logging.handlers import RotatingFileHandler
from flask_mail import Mail
from flask_bootstrap import Bootstrap
db = SQLAlchemy()
migrate = Migrate()
loginmanager = LoginManager()
loginmanager.login_view = 'auth.login'
loginmanager.login_message = u"Please login to access this url"
loginmanager.session_protection = "strong"
mail = Mail()
bootstrap = Bootstrap()

def create_app(ConfigObejct):
# 指明flask的应用所在,用于以后templates/static等文件位置的放置
app = Flask(__name__)
app.config.from_object(ConfigObejct)
db.init_app(app)
migrate.init_app(app,db)
loginmanager.init_app(app)
mail.init_app(app)
bootstrap.init_app(app)


def init_app(self):
pass

from .auth import auth as auth_blueprint
app.register_blueprint(auth_blueprint,url_prefix='/')
from .home import home as home_blueprint
app.register_blueprint(home_blueprint,url_prefix='/')

from .profiles import profiles as profiles_blueprint
app.register_blueprint(profiles_blueprint,url_prefix='/profile')

if not app.debug:
if not os.path.exists('logs'):
os.mkdir('logs')

file_handler = RotatingFileHandler('logs/microblog.log',maxBytes=10240,backupCount=10)
file_handler.setFormatter(logging.Formatter(
'%(asctime)s %(levelname)s:%(message)s [in %(pathname)s:%(lineno)d]'
))
app.logger.addHandler(file_handler)
app.logger.setLevel(logging.INFO)
app.logger.info("app startup")

return app

初始化蓝图对象

1
2
3
4
5
6
7
8
9
# microapp/auth/__init__.py

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from flask import Blueprint
auth = Blueprint('auth',__name__)

from . import routes,forms