我想在烧瓶管理列表视图上的编辑和删除图标旁边添加另一个按钮。此外,我想将该行数据作为发布请求发送到路线。我知道我必须编辑admin/model/list.html模板,但我不知道如何添加此功能。
你能提供任何指导吗?
我在 Azure 上部署了 Flask 应用程序。在不更改任何依赖项的情况下,我突然收到此错误,ImportError:无法从“jinja2”导入名称“contextfunction”。似乎与 Flask-admin 有关:
[2022-03-27 07:22:27 +0000] [7] [INFO] Starting gunicorn 20.1.0
[2022-03-27 07:22:27 +0000] [7] [INFO] Using worker: geventwebsocket.gunicorn.workers.GeventWebSocketWorker
File "/usr/local/lib/python3.10/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
[2022-03-27 07:22:03 +0000] [7] [INFO] Shutting down: Master
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
from .base import expose, expose_plugview, Admin, BaseView, AdminIndexView # noqa: F401
File "/usr/local/lib/python3.10/site-packages/flask_admin/helpers.py", line 2, in <module>
File "/app/eccho.py", line 4, in <module>
File "/usr/local/lib/python3.10/site-packages/gunicorn/app/base.py", line 67, in wsgi
File "/usr/local/lib/python3.10/site-packages/gunicorn/util.py", line 359, in import_app
[2022-03-27 …Run Code Online (Sandbox Code Playgroud) 我正在研究Flask-Admin和PeeWee Backend ModelView(但我的问题也可能适用于SQLAlchemy后端),并且我在文档或示例中找不到两件事:
(1).当我的模型有一个唯一的字段并且我测试/尝试复制它时,我得到一个默认的Flask崩溃屏幕,其中显示消息:"IntegrityError:column username not unique"
我正在https://github.com/mrjoes/flask-admin/blob/master/examples/peewee/simple.py中测试PeeWee示例,我将第21行更改为"username = peewee.CharField(max_length = 80,unique = True)"
然后我尝试使用"username"="user1"添加两个用户.
是否有礼貌的方式回到编辑屏幕(甚至列表屏幕,任何管理员屏幕都会这样做),但有一个受控的错误消息?我不需要自定义错误消息,当前消息正常(IntegrityError:列用户名不是唯一的).但我不喜欢崩溃屏幕.
我可以设置/使用Flask的默认500页,但之后我将完全退出Flask-Admin流程,用户将"错过"他刚输入的数据.
我想回到编辑屏幕,但有一些警报/错误消息.我不介意扩展模板,这不是问题.但我找不到一个拦截错误并正确处理它的地方.有什么建议?
(2):
我还需要一种在流程中添加一些预保存验证的方法.例如,我是一个具有initial_date和final_date的实体的编辑形式,我想在保存之前确保final_date大于initial_date或为null.
我可以通过javascript执行此客户端,扩展该实体的编辑模板并在尾部块中添加我的验证脚本(并拦截form.submit事件).
但是,如果我的验证需要一些服务器端的最后一分钟验证呢?是否有任何方式/地方拦截流程并添加我的验证,运气好的话,以问题1中讨论的相同方式抛出我的错误信息?
提前致谢,
问候,
如何在Flask-Admin中的创建/编辑表单中自定义字段名称?
我知道如何更改表名:
class User(db.Model):
__tablename__ = 'user'
id = db.Column('user_id', db.Integer, primary_key=True, autoincrement=True)
first_name = db.Column(db.String(100))
last_name = db.Column(db.String(100))
login = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120))
password = db.Column(db.String(128))
from flask.ext.admin.contrib.sqla import ModelView
class MyModelView(ModelView):
def is_accessible(self):
return current_user.is_authenticated()
admin = Admin(app, u'CustomName')
admin.add_view(MyModelView(User, db.session, u'Custom Table Name'))
Run Code Online (Sandbox Code Playgroud)
在创建/编辑表单中,我获得了用户db.Model中的列名称之类的字段名称.
我怎么可以简单地改变这个字段名称?
例如,要在用户的创建表单中获取"Foo"而不是"login"?
登录在我的标准视图上运行良好,管理员运行良好,但我似乎无法将登录添加到我的 admin/yikes !
看起来很简单的烧瓶管理文档但是当我添加这个部分时
class MyView(BaseView):
def is_accessible(self):
return login.current_user.is_authenticated()
def _handle_view(self, name, **kwargs):
if not self.is_accessible():
return redirect(url_for('login', next=request.url))
Run Code Online (Sandbox Code Playgroud)
我不会被发送到未经身份验证的用户的登录页面。
知道我还需要做什么吗?
这在我的init文件中看起来正确吗?
from flask.ext.admin import BaseView
class MyView(BaseView):
def is_accessible(self):
return login.current_user.is_authenticated()
def _handle_view(self, name, **kwargs):
if not self.is_accessible():
return redirect(url_for('login', next=request.url))
app = Flask(__name__)
app.config.from_object('config')
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
Bootstrap(app)
from app import views, models
admin = Admin(app)
admin.add_view(ModelView(models.User, db.session))
admin.add_view(ModelView(models.rutable, db.session))
admin.add_view(ModelView(models.rustage, db.session))
admin.add_view(ModelView(models.TOC, db.session))
admin.add_view(ModelView(models.Request, db.session))
admin.add_view(ModelView(models.Staff, …Run Code Online (Sandbox Code Playgroud) 我在Python 2.7.6中使用Flask-Admin 2.1.
我的一个Flask-Admin模型类继承自flask.ext.admin.contrib.sqla.ModelView和覆盖form_rules.
当我运行我的应用程序时,会显示以下警告: "UserWarning: Fields missing from ruleset"
警告是准确的:我的模型中有些字段未包含在规则集中.但这是设计的.我不希望在用户创建或编辑此模型的实例时显示这些字段.
我已经读过这个:https://github.com/flask-admin/flask-admin/pull/815#issuecomment-81963865
我怎么能抑制警告?
我的用户在SQLAlchemy中建模为:
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
url_pic = Column(String(50), nullable=False)
(...)
Run Code Online (Sandbox Code Playgroud)
我希望将用户添加到Flask-Admin中的数据库,这样当我创建用户时,我可以直接上传照片,并且目标URL将被解析并传递给数据库中的url_pic字段.
我已经可以添加用户和上传照片了(请在https://flask-admin.readthedocs.org/en/latest/quickstart/上解释),但无法找到有关如何合并添加用户和照片上传的任何信息相同的观点.
任何线索?
我有一个User模型类,password是许多中的一个属性.我正在使用Flask Web框架和Flask-Admin扩展来创建我的模型类的管理视图.我想在管理视图中使某些字段像password不可编辑或根本不显示它们.我该怎么做?
我可以使字段不显示在普通视图中,但是当我单击表格中任何记录的编辑按钮时,所有字段都会显示并且可以编辑.
我正试图在我的一个烧瓶视图中实现Select2字段.基本上我想在烧瓶应用程序视图中使用相同的select2字段(不是烧瓶管理模型视图),就像在Flask-admin模型创建视图中一样.目前我的解决方案QuerySelectField来自于看起来像这样的wtforms
class TestForm(Form):
name= QuerySelectField(query_factory=lambda: models.User.query.all())
Run Code Online (Sandbox Code Playgroud)
这让我加载和选择我需要的所有数据,但它不提供选择2搜索框等.目前,所有我发现是Select2Field和Select2Widget从瓶/管理/表格/域和瓶/管理/表格/部件同样像这篇文章/sf/ask/1725147231/ 以及http://ivaynberg.github.io/select2/上的 select2文档
据我了解这些可以重复使用,这意味着不需要其他自定义小部件,自定义字段.
如果有人可以提供有关在应用程序中的select2字段实现的更多信息(包括视图,模板,表单文件以及如何正确地"连接"必要的js和css文件,以及如何使用数据库模型加载字段,将不胜感激需要).
我有一个基于类的管理员视图:
class All_RDPs(BaseView):
@expose('/')
def index(self):
return 'ok1'
@expose('/test')
def testindex(self):
return 'ok2'
Run Code Online (Sandbox Code Playgroud)
这是在Flask-Admin中注册的,如下所示:
admin.add_view(All_RDPs(name='dep_rdp'))
Run Code Online (Sandbox Code Playgroud)
然后可以从浏览器中查看,如下所示:
http://localhost/admin/all_rdps/
http://localhost/admin/all_rdps/test
Run Code Online (Sandbox Code Playgroud)
问题是:
all_rdps?url_for这些端点生成网址?url_for('admin.All_RDPs.testindex'),url_for('admin.All_RDPs')不要工作.flask-admin ×10
flask ×8
python ×8
flask-login ×1
flask-peewee ×1
jinja2 ×1
validation ×1
wtforms ×1