Loading

使用flask开发测试平台02-项目结构

目录结构

这篇说一说怎么来组织项目结构,首先我们打开编辑器,vscode和pycharm都行。

flytest
.
├── app
│   ├── choices.py
│   ├── core # 核心文件,如三方插件,celery
│   ├── __init__.py
│   ├── models.py # 模型文件
│   ├── request.py # 请求
│   ├── settings # 设置
│   ├── static # 静态资源
│   ├── templates # jinja2模板
│   ├── utils.py  # 工具类
│   └── views  # 视图
├── flytest.py # 主运行文件
├── logs # 日志
├── media # 上传文件存储
└── requirements.txt

我们先按照该目录搭建一个我们项目的脚手架。

我们上一章节的模型文件就在models.py文件中放着

然后我们使用命令创建python虚拟环境python -m venv env,这里我选择的python版本是3.8.6版本。

安装依赖项

以下是requirements.txt文件中我们本项目要使用的依赖包。

alembic==1.5.3
amqp==5.0.6
APScheduler==3.7.0
asgiref==3.4.1
astroid==2.6.1
autopep8==1.5.5
billiard==3.6.4.0
blinker==1.4
celery==5.1.2
certifi==2020.12.5
chardet==4.0.0
click==7.1.2
click-didyoumean==0.0.3
click-plugins==1.1.1
click-repl==0.2.0
dnspython==1.16.0
eventlet==0.30.2
Faker==8.10.1
Flask==2.0.1
Flask-APScheduler==1.11.0
Flask-Avatars==0.2.2
Flask-Caching==1.9.0
Flask-Limiter==1.4
Flask-Login==0.5.0
Flask-Mail==0.9.1
Flask-Migrate==2.6.0
Flask-Moment==0.11.0
Flask-SQLAlchemy==2.4.4
flask-whooshee==0.7.0
greenlet==1.0.0
gunicorn==20.0.4
idna==2.10
isort==5.9.1
itsdangerous==2.0.1
Jinja2==3.0.1
kombu==5.1.0
lazy-object-proxy==1.6.0
limits==1.5.1
Mako==1.1.4
MarkupSafe==2.0.1
mccabe==0.6.1
mysqlclient==2.0.3
Pillow==8.1.0
pip-autoremove==0.9.1
prompt-toolkit==3.0.20
pycodestyle==2.6.0
pydocstyle==5.1.1
pygal==2.4.0
pylint==2.9.0
python-dateutil==2.8.1
python-dotenv==0.15.0
python-editor==1.0.4
pytz==2021.1
redis==3.5.3
requests==2.25.1
six==1.15.0
snowballstemmer==2.1.0
SQLAlchemy==1.3.23
text-unidecode==1.3
toml==0.10.2
tzlocal==2.1
urllib3==1.26.3
vine==5.0.0
watchdog==1.0.2
wcwidth==0.2.5
Werkzeug==2.0.1
Whoosh==2.7.4
wrapt==1.12.1

我们创建好虚拟环境之后,使用命令pip install -r requirements.txt 进行依赖包的安装。

依赖项

上一章节说到我们在模型文件中使用了flask-login和flask-avatars这两个库。

所以我们需要在app/core/extensions.py文件中进行注册。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from flask_avatars import Avatars



db = SQLAlchemy()
mail = Mail()
avatars = Avatars()

当然还有很多的依赖项这里没有列举

设置

然后我们设置settings.py文件添加项目配置。

import os
from flytest import BASE_DIR


DEBUG = True
SECRET_KEY = os.getenv('SECRET_KEY', "ahJ#5UoEg9x1T&@n")

PER_PAGE_SIZE = 10

DB_SERVER = os.getenv("DB_SERVER", "127.0.0.1")
SQLALCHEMY_ECHO = True
SQLALCHEMY_RECORD_QUERIES = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = "mysql://root:root1234@%s:3306/flytest" % DB_SERVER

# email
MAIL_SERVER = os.getenv("MAIL_SERVER", 'smtp.126.com')
MAIL_PORT = os.getenv("MAIL_PORT", 25)
MAIL_USERNAME = os.getenv("MAIL_USERNAME", 'twxhou@126.com')
MAIL_PASSWORD = os.getenv("MAIL_PASSWORD", 'GQWJDUKVWNOJLPOH')
MAIL_DEFAULT_SENDER = (os.getenv("MAIL_DEFAULT_SENDER", 'WXTEST Admin'), MAIL_USERNAME)

# cache
CACHE_CONFIG = {
    'CACHE_TYPE': "redis",  # Flask-Caching related configs
    'CACHE_REDIS_HOST': DB_SERVER,
    'CACHE_REDIS_PORT': 6379,
    "CACHE_DEFAULT_TIMEOUT": 600
}

AVATARS_SAVE_PATH = os.path.join(BASE_DIR, 'media', 'avatars')
IMAGES_PATH = os.path.join(BASE_DIR, 'media', 'images')
VIDEOS_PATH = os.path.join(BASE_DIR, 'media', 'videos')
AUDIOS_PATH = os.path.join(BASE_DIR, 'media', 'audios')
FLASK_LOGGER_FILE = os.path.join(BASE_DIR, 'logs', 'server.log')
CAPTCHA_FONT_FILE = os.path.join(BASE_DIR, 'media', 'fonts', 'arial.ttf')


# crontab-config
SCHEDULER_API_ENABLED = True
SCHEDULER_TIMEZONE = 'Asia/Shanghai'

SCHEDULER_EXECUTORS = {
    'default': {'type': 'threadpool', 'max_workers': 20}
}

SCHEDULER_JOB_DEFAULTS = {
    'coalesce': False,
    'max_instances': 3
}

先配置到这里吧,下一篇先写一个注册页面。

posted @ 2022-10-05 19:57  随风挥手  阅读(199)  评论(0编辑  收藏  举报
群1
299524235(满)
群2
362812191