Flask Boilerplate 项目教程
1. 项目的目录结构及介绍
flask-boilerplate/
├── Procfile
├── README.md
├── app.py
├── config.py
├── error.log
├── forms.py
├── models.py
├── requirements.txt
├── static/
│ ├── css/
│ │ ├── bootstrap-3.0.0.min.css
│ │ ├── bootstrap-theme-3.0.0.css
│ ├── js/
│ ├── img/
├── templates/
│ ├── index.html
│ ├── layout.html
│ ├── login.html
│ ├── register.html
- Procfile: 用于Heroku部署的文件,定义了启动命令。
- README.md: 项目说明文档。
- app.py: 项目的入口文件。
- config.py: 项目的配置文件。
- error.log: 错误日志文件。
- forms.py: 表单定义文件。
- models.py: 数据库模型定义文件。
- requirements.txt: 项目依赖文件。
- static/: 静态文件目录,包含CSS、JS和图片文件。
- templates/: HTML模板文件目录。
2. 项目的启动文件介绍
app.py 是项目的启动文件,主要包含以下内容:
from flask import Flask, render_template, request, redirect, url_for
from forms import RegistrationForm, LoginForm
from models import db, User
import config
app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm(request.form)
if request.method == 'POST' and form.validate():
user = User(form.username.data, form.email.data, form.password.data)
db.session.add(user)
db.session.commit()
return redirect(url_for('index'))
return render_template('register.html', form=form)
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm(request.form)
if request.method == 'POST' and form.validate():
user = User.query.filter_by(username=form.username.data).first()
if user and user.check_password(form.password.data):
return redirect(url_for('index'))
return render_template('login.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
- 导入必要的模块和配置。
- 初始化Flask应用和数据库。
- 定义路由和视图函数。
- 启动应用。
3. 项目的配置文件介绍
config.py 是项目的配置文件,主要包含以下内容:
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
- SECRET_KEY: 用于加密的密钥。
- SQLALCHEMY_DATABASE_URI: 数据库连接字符串。
- SQLALCHEMY_TRACK_MODIFICATIONS: 是否跟踪数据库修改。
这些配置可以根据实际需求进行修改。