Python 在Flask中创建可重用的表单/视图

Python 在Flask中创建可重用的表单/视图,python,flask,jinja2,flask-wtforms,Python,Flask,Jinja2,Flask Wtforms,我不确定什么是最好的下山路线,否则我可能会错过一些明显的东西 我可以举一个例子,我有“person”模型和相关表单,并创建视图来添加一个新的“person”。这一切都很好。不过,我想做的是在母版页中与其他类似的“视图/表单”一起使用此“视图/表单”。每个部件都可以从每个子视图/表单中添加/编辑或删除记录 所以我已经完成了所有的功能,只是不知道如何用子对象创建这个母版页,但是这些子对象也可以是它们自己的页面,类似的东西 其思想是母版页结构是灵活的,可以根据用户所在的上下文容纳各种元素 我应该看看蓝

我不确定什么是最好的下山路线,否则我可能会错过一些明显的东西

我可以举一个例子,我有“person”模型和相关表单,并创建视图来添加一个新的“person”。这一切都很好。不过,我想做的是在母版页中与其他类似的“视图/表单”一起使用此“视图/表单”。每个部件都可以从每个子视图/表单中添加/编辑或删除记录

所以我已经完成了所有的功能,只是不知道如何用子对象创建这个母版页,但是这些子对象也可以是它们自己的页面,类似的东西

其思想是母版页结构是灵活的,可以根据用户所在的上下文容纳各种元素

我应该看看蓝图还是Jinja2及其模板结构。或者是我在主应用程序中处理路由的方式


如果这太模糊,我深表歉意。

我已经使用AngularJS ng include指令完成了此操作。你可以包含任何你想要的html,但是要小心使用Jinja2。如果您试图包含的html包含任何脚本标记,它将崩溃。请看我的问题。如果需要导入需要脚本标记的表单,则需要确保在使用Angular按钮推送表单时未加载该表单。由于它发出xhr请求,您可以使用flask.request.is_xhr检查它是angular还是需要该表单的用户。你不能忘记将其添加到你的angular应用程序中 否则,is_xhr将始终返回false

myAppModule.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]);
还要注意基本模板,因为它们通常加载脚本标记。您可以通过flask路由传递基本模板,并在通过angular发出请求时使其扩展一个空白的基本html。我希望我在这里有我的例子,但我在公共汽车上。让我知道你走了多远。

只有他们吗?