运行Airflow的常用说明不适用于Windows环境:
# airflow needs a home, ~/airflow is the default,
# but you can lay foundation somewhere else if you prefer
# (optional)
export AIRFLOW_HOME=~/airflow
# install from pypi using pip
pip install airflow
# initialize the database
airflow initdb
# start the web server, default port is 8080
airflow webserver -p 8080
Run Code Online (Sandbox Code Playgroud)
Airflow实用程序在命令行中不可用,我无法在其他地方找到它以手动添加.Airflow如何在Windows上运行?
我希望使用Flask保护Web API并与之集成flask-admin
以提供管理界面.我搜索并发现flask-admin有一个管理面板,/admin
默认情况下任何人都可以访问它.它不提供身份验证系统并且完全打开(没有任何安全性),因为他们没有假设用于提供安全性的内容.此API必须在生产中使用,因此我们无法/admin
为每个人访问网址提供开放路径.需要适当的身份验证.
在views.py
我不能简单地放置/admin
路由并通过装饰器提供身份验证,因为这将覆盖已经创建的现有路由flask-admin
,从而导致错误.
进一步的研究表明,有两个模块flask-admin
和flask-security
.我知道flask-admin
有is_accessible
保护它的方法,但它没有提供很多功能flask-security
.
我没有找到任何方法来确保终点/admin
加上所有其他终点,/admin
例如/admin/<something>
.
我正在寻找专门用flask-security来完成这项任务.如果不可能,请提出替代方案.
PS:我知道我可以锁定ngnix
自己,但那将是最后一个选择.如果我可以拥有一个认证系统,flask-security
那将是好事.
我有一个问题,我找不到一个简单的解决方案,使用Flask-Admin和MongoEngine.我有一个名为的Document类ExerciseResourceContent
.它有一个"问题"属性,它是一个ListField
一个的EmbeddedDocument
叫ExerciseQuestion
:
class ExerciseResourceContent(ResourceContent):
"""An exercise with a list of questions."""
## Embedded list of questions
questions = db.ListField(db.EmbeddedDocumentField(ExerciseQuestion))
Run Code Online (Sandbox Code Playgroud)
该ExerciseQuestion
文件实际上是DynamicEmbeddedDocument
:
class ExerciseQuestion(db.DynamicEmbeddedDocument):
"""
Generic collection, every question type will inherit from this.
Subclasses should override method "without_correct_answer" in order to define the version sent to clients.
Subclasses of questions depending on presentation parameters should also override method "with_computed_correct_answer".
"""
_id = db.ObjectIdField(default=ObjectId)
## Question text
question_text = db.StringField(required=True)
## …
Run Code Online (Sandbox Code Playgroud) 我正在尝试渲染一个包含DatePicker的模板,但是当我尝试时遇到500错误.因为我的代码是正确的,但似乎有些东西失败了或者我没有正确理解它的方法.
代码如下:
Reporting.py
from flask.ext.admin import BaseView, expose
from wtforms import DateField, Form
from wtforms.validators import Required
from flask.ext.admin.form import widgets
from flask import request
class DateRangeForm(Form):
start_date = DateField('Start', validators=[Required()], format = '%d/%m/%Y', description = 'Time that the event will occur', widget=widgets.DatePickerWidget)
class ReportingView(BaseView):
@expose('/')
def index(self):
form = DateRangeForm(request.form)
return self.render('reporting.j2', form=form)
Run Code Online (Sandbox Code Playgroud)
报告模板:
{% extends 'admin/master.html' %}
{% block body %}
{{super()}}
Working on it!
{% if form %}
{{form.start_date}}
{% endif %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud) 我想在Flask-Admin模型列表视图中仅显示付费订单.
这是models.py:
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
amount = db.Column(db.Integer)
description = db.Column(db.String)
paid = db.Column(db.Boolean, default=False)
Run Code Online (Sandbox Code Playgroud)
这是Flask-Admin的ModelView:
class OrderView(ModelView):
column_filters = ("paid")
admin.add_view(OrderView(Order, db.session))
Run Code Online (Sandbox Code Playgroud)
过滤器工作正常,但我想使此过滤器默认.或者更好的是,不要使用过滤器,只显示输出Order.query.filter(Order.paid==True)
查询的订单.
是否可以使用Flask-Admin?
我有一个具有依赖于其它列的值一列,按照该指令的数据模型,这个页面,我创建了用于确定在创建这个特定列,像这样的值上下文敏感的功能:
def get_column_value_from_context(context):
# Instructions to produce value
return value
class MyModel(db.Model):
id = db.Column(db.Integer,
primary_key=True)
my_column = db.Column(db.String(64),
nullable=False,
default=get_column_value_from_context)
name = db.Column(db.String(32),
nullable=False,
unique=True,
index=True)
title = db.Column(db.String(128),
nullable=False)
description = db.Column(db.String(256),
nullable=False)
Run Code Online (Sandbox Code Playgroud)
这种方法非常不错,我可以从命令行或使用脚本创建没有问题的行.
我还ModelView
使用Flask-Admin在应用程序中添加了一个:
class MyModelView(ModelView):
can_view_details = True
can_set_page_size = True
can_export = True
admin.add_view(MyModelView(MyModel, db.session))
Run Code Online (Sandbox Code Playgroud)
在我单击列表视图中的" 创建"按钮之前,这也很有效.我收到此错误:
AttributeError:'NoneType'对象没有属性'get_current_parameters'
因为在这里执行create_model
处理程序ModelView
是这样的:
def create_model(self, form):
"""
Create model from form.
:param form:
Form instance
""" …
Run Code Online (Sandbox Code Playgroud) 我想通过构建CMS来了解有关Flask的更多信息.我正在使用flask-admin添加帖子,图片等.
我设法用ckeditor覆盖textarea .但我想将静态文件夹中图像的路径传递给ckeditor图像插件.
我无法弄清楚如何将参数传递给我的edit.html模板.
这是代码:
class TestAdmin(ModelView):
form_overrides = dict(text=forms.CustomTextAreaField)
create_template = 'edit.html'
edit_template = 'edit.html'
Run Code Online (Sandbox Code Playgroud)
从flask-admin的文档中我发现_template_args
可以用来将参数传递给模板.但我无法弄清楚如何.
这样做的确切方法是什么?
我的SQLAlchemy模型有一个String
字段,我想限制为几个选择.
我想知道如何在Flask-Admin界面中为此字段创建一个下拉列表,以确保只使用我的一个选项填充数据库.如果我让用户手动输入这些字段,他们可能会错误地拼写它们等.
我尝试将表单字段设置readonly
为Flask-Admin应用程序中的编辑视图.根据这个问题的答案,我知道如果我有这个
class MyView(ModelView):
form_widget_args = {
'title': {
'readonly': True
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将表单字段设置为readonly
,但这适用于创建和编辑视图.如何仅将参数应用于编辑视图?
前提条件:
我是Python新手,特别是Flask-Admin.我创建了一个简单的测试服务,它有MondoDB,保持数据的"一对一"关系.
employeeName - >薪水
该模型看起来像这样:
class Employee(db.Document):
fullName = db.StringField(max_length=160, unique=True)
salary = db.IntField()
Run Code Online (Sandbox Code Playgroud)
我使用Flask-Admin来查看包含数据的表并进行编辑.当我想更改'salary'字段时,我只需按下'edit'按钮,在Flask-Admin的默认编辑视图中我更改整数值.我按"提交"并成功应用数据库中的新值.
问题:
但是我需要以这种方式覆盖Submit方法,因为它是功能并添加了一些自定义代码.就像我们假设我想在实际数据库提交后在日志文件中添加注释:
logging.warning('%s的工资:已更改为/%s',fullName,salary)
任何关于如何实现这一点的建议都将受到高度赞赏.也许你可以指导我走的路,因为Flask-Admin文档到目前为止还没有给我足够的帮助.
flask-admin ×10
flask ×9
python ×8
airflow ×1
jinja2 ×1
mongoengine ×1
security ×1
windows ×1
wtforms ×1