首先在网上下了个flask项目:
目录的构成:
templates 类似view层 用于保存html页面
static:静态文件
其他文件夹都是作为包存在的,都有__init__.py,详细的在后面说
入口文件为manage.py:
1.sys.path.append(os.path.abspath(os.path.dirname(__file__))) 设置当前目录进入环境变量,这样就可以方便的导入
2.导入了octblog里的create_app方法,根据配置创建app
3.manager.add_command 使用manage时的配置
4.利用了unitest,但我没用过
5.运行
在create_app.py(位于octblog包中的__init__.py中)里
1. app = Flask(__name__,template_folder=config[config_name].TEMPLATE_PATH, static_folder=config[config_name].STATIC_PATH) 新建一个app
2.初始化一些数据库之类的配置:init_app(app)
3.from main.urls import main as main_blueprint, blog_admin as blog_admin_blueprint 导入main包中的url路由配置(blueprint是flask中组织view函数或者说组织各种静态资源的一种方式,就像我们书的目录一样,这样当一个请求过来的时候都可以通过这个目录找到对应的view函数,同时对于各个view函数,其他的view函数都是对其可见的,各个view函数之间也可以通过这个目录找到其他的view函数(取自https://segmentfault.com/q/1010000002980493))
创建方式: main = Blueprint('main', __name__)
main.add_url_rule('/post/<slug>/', 'post_detail_fix', views.post_detail, defaults={'fix':True})
把所有给/post/<slug>/ 的请求都转发给当前目录下中views.py文件中的post_details方法
当然还有一些其他的注册方式,都很容易看得懂
4.from accounts.urls import accounts as accounts_blueprint 导入accounts包内的url路由配置
5. app.register_blueprint(main_blueprint)
app.register_blueprint(blog_admin_blueprint, url_prefix='/admin')
app.register_blueprint(accounts_blueprint, url_prefix='/accounts')
加个前缀区分admin和account,也就是前台和后台吧。
大概就这么多,从url进之后处理函数都在views.py里面,在包里面互相调用,形成了整个web逻辑,只是个很简单的应用,用作flask的入门参考
jinja2:
刚刚开始看的时候还不知道jinja是什么·其实一直在用类似的模板,但只是不知道他叫模板,就是能够方便你把后端数据传到前端的函数和语法render_template