flaskappbuilder存在的问题

探讨了在使用Flask框架进行网页跳转时遇到的一个常见问题:从页面A跳转到B,再返回A编辑并保存后,错误地跳回了页面B。分析了问题原因在于缓存和URL栈的机制,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. url跳转问题
    具体描述:
    查看某一个资源,页面为A,然后跳转到另一个页面B,然后后退到页面A,编辑页面A 中的资源,保存之后跳到了页面B,本来应该是回到页面A

    相关代码:

     self.update_redirect()
     self.get_redirect()
    

    问题查找:
    flaskappbuilder把网站的url放在一个栈里,当你进入列表页面的时候,调用update_redict,把url放到栈里;从列表页面进入编辑或者添加页面的时候,调用update_redict,把URL放到栈里,页面保存返回的时候调用get_redict,从栈里把最近一次入栈的url pop出来,然后返回url对应的页面。对于上面的问题,出现的原因是,后退的时候,是从服务器缓存里拿到的页面信息,没有调用接口,所以也没有把url入栈,相应的保存之后返回的页面url将是之前的页面URL。

    解决方案:
    从A页面后退到B页面之后,刷新一个B页面,这个时候B不是走缓存而是从新调用接口,问题就解决了。

(superset) [root@node01 miniconda3]# superset db upgrade Traceback (most recent call last): File "/opt/software/miniconda3/envs/superset/bin/superset", line 5, in <module> from superset.cli import superset File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/superset/__init__.py", line 21, in <module> from superset.app import create_app File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/superset/app.py", line 24, in <module> from flask_appbuilder import expose, IndexView File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/flask_appbuilder/__init__.py", line 5, in <module> from .api import ModelRestApi # noqa: F401 File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/flask_appbuilder/api/__init__.py", line 21, in <module> from .convert import Model2SchemaConverter File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/flask_appbuilder/api/convert.py", line 4, in <module> from flask_appbuilder.models.sqla.interface import SQLAInterface File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/flask_appbuilder/models/sqla/interface.py", line 40, in <module> from sqlalchemy_utils.types.uuid import UUIDType File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/sqlalchemy_utils/__init__.py", line 1, in <module> from .aggregates import aggregated # noqa File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/sqlalchemy_utils/aggregates.py", line 372, in <module> from .functions.orm import get_column_key File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/sqlalchemy_utils/functions/__init__.py", line 1, in <module> from .database import ( # noqa File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/sqlalchemy_utils/functions/database.py", line 11, in <module> from .orm import quote File "/opt/software/miniconda3/envs/superset/lib/python3.6/site-packages/sqlalchemy_utils/functions/orm.py", line 14, in <module> from sqlalchemy.orm.query import _ColumnEntity ImportError: cannot import name '_ColumnEntity'
最新发布
06-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值