点击上方“程序员大咖”,选择“置顶公众号”
关键时刻,第一时间送达!
引言:想使用python的flask框架搭建一个日料网站,主要包含web架构,静态页面,后台系统,交互。
本节知识:搭建web目录,目前正在copy网站。
python环境:python2.7,flask,以及flask相关的库(没有列完,如果运行manage.py时提示未安装的库安装就ok了。)
先来看看大致构成,如下图:
然后按照如图新建一个目录,我一个个截图方便大家看。
主目录:
app:编写主要程序的目录
migrations:数据库相关目录
tests:测试目录
venu:扩展库或其他库环境
config.py:配置文件(重要)
manage.py:网站运行文件
requirements.txt:依赖库清单(这个好像自动生成)
贴上该目录两个脚本的代码:
config.py
# -*- coding: utf-8 -*-
import os
basedir = os.path.abspath(os.path.dirname(__file__))
# 基类
class Config:
SECRET_KEY = 'hard to guess string'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
FLASKY_MAIL_SUBJECT_PREFIX = '[Flask]'
FLASKY_MAIL_SENDER = 'Flask Admin'
FLASKY_ADMIN = 'dimples'
@staticmethod
def init_app(app):
pass
# 开发环境
class DevelopmentConfig(Config):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql://root@localhost:3306/f_luntan?charset=utf8'
# 测试环境
class
TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
# 生产环境
class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
# 设置一个config 字典中,注册了不同的配置环境
config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}
manage.py
# -*- coding: utf-8 -*-
from app import create_app, db
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
app = create_app('default')
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
--------------这是分割线--------------
其它目录暂时都可以放在一边
进入app目录 cd app
该目录有点类似mvc模式
main:视图文件,错误导向,表单文件等
models:模型文件跟数据库挂钩(下面的models.py也是模型文件。可以放在外面,也可以放在这个文件夹里面看着标准些,位置不同只是导入的路径不一样)
static:静态文件js,img,css
templates:模板文件
然后接下来打开剩余的2个py文件
init.py
# -*- coding: utf-8 -*-
from flask import Flask
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_sqlalchemy import SQLAlchemy
from config import config
bootstrap = Bootstrap()
mail = Mail()
db = SQLAlchemy()
# 工厂函数
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
bootstrap.init_app(app)
mail.init_app(app)
db.init_app(app)
#注册蓝本
from .
main import main as main_blueprint
app.register_blueprint(main_blueprint)
return app
很多需要安装的库安上去
models.py 模型文件,我没放在models文件夹里面,也可以放在里面,改变下导入的路径即可
from app import db
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
UserCode = db.Column(db.String(64), unique=True, index=True)
Password = db.Column(db.String(128))
def __init__(self, UserCode=None, Password=None):
self.UserCode = UserCode
self.Password = Password
def __repr__(self):
return '' % self.UserName
建了个测试表
------------------------这是分割线----------------------
进入main文件夹 cd main
init.py
# -*- coding: utf-8 -*-
from flask import Blueprint
main = Blueprint('main', __name__)
from . import