长沙设计网站效果,网页设计与制作学些什么,wordpress视频,家居网站建设如何大型项目目录结构#xff1a;
问题引入#xff1a;
在上篇文章讲蓝图的时候我给了一个demo项目#xff0c;其中templates和static都各自只有一个#xff0c;这就意味着所有app的模板和静态文件都放在了一起#xff0c;如果项目比较大的话#xff0c;这就非常乱#xf…大型项目目录结构
问题引入
在上篇文章讲蓝图的时候我给了一个demo项目其中templates和static都各自只有一个这就意味着所有app的模板和静态文件都放在了一起如果项目比较大的话这就非常乱
所以改进之处就是给每个蓝图单独设置templates和static目录【在创建蓝图的的时候通过指定static_folder和template_folder属性实现】
在创建蓝图对象时通过传递static_folder和template_folder参数来指定蓝图的静态文件和模板文件目录【注意这些参数接收相对于蓝图所在包或模块的路径】
from flask import Blueprintauth_bp Blueprint(auth, __name__, static_folderauth-static, template_folderauth-templates)这样每个蓝图都可以拥有自己独立的静态文件和模板文件目录使得不同蓝图下的资源能够被正确加载和渲染。
需要注意的是
创建蓝图对象时指定的模板文件目录优先级低于创建Flask应用程序对象时指定的模板文件目录默认为templates文件夹。
demo项目结构如下 run.py from flask_struct import appif __name__ __main__:app.run() flask_struct/__init__.py from flask import Flask
from .admin import admin
from .web import webapp Flask(__name__)
app.debug Trueapp.register_blueprint(admin, url_prefix/admin)
app.register_blueprint(web) admin/views.py from . import adminadmin.route(/index)
def index():return Admin Indexadmin/__init__.py from flask import Blueprintadmin Blueprint(admin,__name__,template_foldertemplates,static_folderstatic
)
from . import views web/views.py from . import webweb.route(/index)
def index():return Web Indexweb/__init__.py from flask import Blueprintweb Blueprint(web,__name__,template_foldertemplates,static_folderstatic
)
from . import views
基于前面十六篇文章给出的一个Demo结构后续还会有更好的 要努力学习专栏哦~
拓展一pipreqs库
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中一个东西后面可以加括号可能是哪些情况
在Python中当一个对象后面加上括号时它可能是以下几种类型之一 函数一个函数是可调用的对象。通过在函数名后加上括号可以执行该函数并传递相应的参数。 方法方法是属于类的函数。通过在实例或类名后加上括号可以调用该方法并传递相应的参数。 类类本身也是可调用的对象。通过在类名后加上括号可以创建类的实例。 对象某个类的实例对象也可以是可调用的对象。通过在对象名后加上括号可以调用该对象所属类中定义的特殊方法例如__call__()方法。
拓展三什么是函数什么是方法
在Python中函数function和方法method是两种不同的概念。
函数function是一段封装了特定功能的可重用代码块。它接收输入参数执行特定的操作并返回结果。函数可以在任何地方定义和使用不依赖于任何类或对象。它们通常用于模块化代码、提高代码的复用性和可维护性。如下是一个简单的函数示例
def add(a, b):return a bresult add(2, 3)
print(result) # 输出5方法method是属于某个类的函数。它定义在类的内部并且可以访问类的属性和其他方法。方法通过对类的实例进行调用来执行相应的操作。每个方法的第一个参数通常都是 self它表示方法所属的实例对象。如下是一个简单的类和方法示例
class Circle:def __init__(self, radius):self.radius radiusdef area(self):return 3.14 * self.radius * self.radiuscircle Circle(5)
circle_area circle.area()
print(circle_area) # 输出78.5在上面的示例中area() 是 Circle 类的一个方法它可以通过 circle.area() 的方式进行调用。
总结起来函数是独立的可调用代码块而方法是属于类的函数需要通过类的实例进行调用。
易混淆案例
class Demo(object):def fetch(self):passprint(Demo.fetch)obj Demo()
print(obj.fetch) 可以发现上面那个是函数而下面那个是方法。
箴言对于一个类里的函数究竟是方法还是函数。取决于谁调用它