【12.0】Flask框架之flask-script
【一】Django中的命令
【1】引入
- django中,有命令
python manage.py runserver
:- 这个命令用于启动Django开发服务器,让我们能够在本地运行我们的应用程序。
- 它会默认在本地的8000端口上启动服务器,我们可以在浏览器中访问 http://localhost:8000 来查看应用程序。
python manage.py makemigrations
:- 这个命令用于生成数据库迁移文件,当我们修改了模型(Models)的结构时,需要运行这个命令来更新数据库。
- 它会根据模型的改动生成相应的迁移文件,我们稍后可以通过运行
python manage.py migrate
来应用这些迁移,使数据库保持与模型同步。
- 自定制命令(django如何自定制命令)
- python manage.py init_db excel文件路径 指定表名
【2】自定义自己的命令
- 除了这些内置的命令,我们还可以自定义自己的命令来满足项目的特殊需求。
- 下面是一个自定义命令的示例演示如何初始化数据库表格:
# myapp/management/commands/init_db.py
from django.core.management.base import BaseCommand
from myapp.models import MyModel
import pandas as pd
class Command(BaseCommand):
help = 'Initialize database table from excel file'
def add_arguments(self, parser):
parser.add_argument('file_path', type=str, help='Path to the excel file')
parser.add_argument('table_name', type=str, help='Name of the table')
def handle(self, *args, **options):
file_path = options['file_path']
table_name = options['table_name']
# 读取Excel文件
data = pd.read_excel(file_path)
# 将数据导入数据库表格
for index, row in data.iterrows():
MyModel.objects.create(name=row['name'], age=row['age'], table=table_name)
-
在上面的示例中,我们创建了一个名为
init_db
的命令,它接受两个参数:excel文件路径
和指定表名
。- 在
handle
方法中,我们首先使用pandas库读取Excel文件的数据,然后将数据逐行导入到名为MyModel
的模型对应的数据库表格中。
- 在
-
要使用自定义命令,我们需要确保将命令所在的应用程序添加到项目的
INSTALLED_APPS
设置中,并确保命令文件位于应用程序的management/commands
目录下。 -
使用该自定义命令的示例命令行执行方式为:
python manage.py init_db path/to/excel/file.xlsx tablename
-
其中
path/to/excel/file.xlsx
是Excel文件的路径,tablename
是要导入数据的表名。 -
这样,我们就可以通过自定义命令来根据特定的需求扩展Django的功能,并实现更多定制化的操作。
【二】flask命令启动
【1】引入
- flask启动项目,像djagno一样,通过命令启动
pip install Flask==2.2.2
pip install Flask_Script==2.0.3
【2】借助于:flask-script 实现
【1】安装
pip3.8 install flask-script
【2】修改代码
from flask_script import Manager
manager=Manager(app)
manager.run()
【3】用命令启动
(1)常规命令启动
python manage.py runserver
(2)自定制命令
- 简单自定制命令
@manager.command
def custom(arg):
# 命令的代码,比如:初始化数据库, 有个excel表格,使用命令导入到mysql中
print(arg)
- 复杂一些的自定制命令
@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def cmd(name, url):
print(name, url)
【三】命令启动演示
【1】主程序代码
manage.py
from flask import Flask, render_template
from flask_script import Manager
app = Flask(__name__, template_folder='templates')
app.debug = True
manager = Manager(app)
@app.route('/', methods=['GET', 'POST'])
def index():
return render_template('index.html')
if __name__ == '__main__':
manager.run()
templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>index页面</h1>
</body>
</html>
【2】简单启动命令
- 在当前
manage.py
的文件路径下
python manage.py runserver
【3】自定制简单启动命令
from flask import Flask, render_template
from flask_script import Manager
app = Flask(__name__, template_folder='templates')
app.debug = True
manager = Manager(app)
@app.route('/', methods=['GET', 'POST'])
def index():
return render_template('index.html')
@manager.command
def custom(arg):
# 命令的代码,比如:初始化数据库, 有个excel表格,使用命令导入到mysql中
print(arg)
if __name__ == '__main__':
manager.run()
- 启动命令
python manage.py custom dream
PS E:flask_project\day006> python manage.py custom dream
dream
- 启动命令会自动执行当前函数
【4】自定制复杂启动命令
from flask import Flask, render_template
from flask_script import Manager
app = Flask(__name__, template_folder='templates')
app.debug = True
manager = Manager(app)
@app.route('/', methods=['GET', 'POST'])
def index():
return render_template('index.html')
@manager.command
def custom(arg):
# 命令的代码,比如:初始化数据库, 有个excel表格,使用命令导入到mysql中
print(arg)
@manager.option('-n', '--name', dest='name')
@manager.option('-u', '--url', dest='url')
def cmd(name, url):
# python manage.py cmd -n mysql -u run
# python manage.py cmd --name mysql --url run
print(name, url)
if __name__ == '__main__':
manager.run()
- 启动命令
python manage.py cmd -n mysql -u run
python manage.py cmd --name mysql --url run
PS E:flask_project\day006> python manage.py cmd -n mysql -u run
mysql run
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17659513.html