在上篇文章讲蓝图的时候我给了一个demo项目,其中templates和static都各自只有一个,这就意味着所有app的模板和静态文件都放在了一起,如果项目比较大的话,这就非常乱!
所以改进之处就是给每个蓝图单独设置templates和static目录【在创建蓝图的的时候通过指定static_folder
和template_folder
属性实现】
static_folder
和template_folder
参数来指定蓝图的静态文件和模板文件目录【注意:这些参数接收相对于蓝图所在包或模块的路径】from flask import Blueprint
auth_bp = Blueprint('auth', __name__, static_folder='auth-static', template_folder='auth-templates')
这样,每个蓝图都可以拥有自己独立的静态文件和模板文件目录,使得不同蓝图下的资源能够被正确加载和渲染。
需要注意的是:
run.py:
from flask_struct import app
if __name__ == '__main__':
app.run()
flask_struct/__init__.py
:
from flask import Flask
from .admin import admin
from .web import web
app = Flask(__name__)
app.debug = True
app.register_blueprint(admin, url_prefix='/admin')
app.register_blueprint(web)
admin/views.py:
from . import admin
@admin.route('/index')
def index():
return 'Admin Index'
admin/__init__.py
:
from flask import Blueprint
admin = Blueprint(
'admin',
__name__,
template_folder='templates',
static_folder='static'
)
from . import views
web/views.py:
from . import web
@web.route('/index')
def index():
return 'Web Index'
web/__init__.py
:
from flask import Blueprint
web = Blueprint(
'web',
__name__,
template_folder='templates',
static_folder='static'
)
from . import views
基于前面十六篇文章给出的一个Demo结构,后续还会有更好的!
要努力学习专栏哦~
pipreqs
是一个用于生成Python项目依赖列表(requirements.txt 文件)的第三方库。它可以扫描项目代码,找出代码中所使用的外部库,并将这些库及其版本信息写入 requirements.txt
文件中,方便项目的共享和部署。
安装 pipreqs:
在终端或命令提示符中运行以下命令安装 pipreqs
:
pip install pipreqs
生成 requirements.txt 文件:
在项目目录中,运行以下命令生成 requirements.txt
文件:
pipreqs /path/to/your/project
这会扫描指定项目目录下的Python文件,找出项目所依赖的外部库,并将它们写入 requirements.txt
文件中。
如果想要指定输出文件的位置,可以使用以下命令:
pipreqs /path/to/your/project --savepath custom_requirements.txt
这样会将依赖列表保存到 custom_requirements.txt
文件中。
需要注意的是,pipreqs
会尽量准确地找出项目中的依赖,但有时候它可能会漏掉一些动态导入或其他特殊情况。因此,在生成 requirements.txt
文件后,需要检查!确保所有的依赖都被正确地包含在内。
在Python中,当一个对象后面加上括号时,它可能是以下几种类型之一:
函数:一个函数是可调用的对象。通过在函数名后加上括号,可以执行该函数并传递相应的参数。
方法:方法是属于类的函数。通过在实例或类名后加上括号,可以调用该方法并传递相应的参数。
类:类本身也是可调用的对象。通过在类名后加上括号,可以创建类的实例。
对象:某个类的实例对象也可以是可调用的对象。通过在对象名后加上括号,可以调用该对象所属类中定义的特殊方法,例如__call__()
方法。
在Python中,函数(function)和方法(method)是两种不同的概念。
def add(a, b):
return a + b
result = add(2, 3)
print(result) # 输出:5
self
,它表示方法所属的实例对象。class Circle:
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
circle = Circle(5)
circle_area = circle.area()
print(circle_area) # 输出:78.5
在上面的示例中,area()
是 Circle
类的一个方法,它可以通过 circle.area()
的方式进行调用。
总结起来,函数是独立的可调用代码块,而方法是属于类的函数,需要通过类的实例进行调用。
class Demo(object):
def fetch(self):
pass
print(Demo.fetch)
obj = Demo()
print(obj.fetch)
可以发现上面那个是函数,而下面那个是方法。
箴言:对于一个类里的函数,究竟是方法还是函数。取决于谁调用它!