flask管理员以正确的方式处理请求

flask管理员以正确的方式处理请求,flask,flask-admin,Flask,Flask Admin,如何处理来自listview模板的请求。如果我在custom_list.html中单击submit按钮,则变量不会作为字符串输出。我做错了什么 app.py from flask import Flask import flask_admin as admin from flask_mongoengine import MongoEngine from flask_admin.contrib.mongoengine import ModelView from flask_admin.actio

如何处理来自listview模板的请求。如果我在custom_list.html中单击submit按钮,则变量不会作为字符串输出。我做错了什么

app.py

from flask import Flask
import flask_admin as admin
from flask_mongoengine import MongoEngine
from flask_admin.contrib.mongoengine import ModelView
from flask_admin.actions import action

# Create application
app = Flask(__name__)

# Create dummy secrey key so we can use sessions
app.config['SECRET_KEY'] = '123456790'
app.config['MONGODB_SETTINGS'] = {'DB': 'test_app'}

# Create models
db = MongoEngine()
db.init_app(app)


class Website(db.Document):
    domain_name = db.StringField(max_length=200)
    title = db.StringField(max_length=160)
    meta_desc = db.StringField()


class WebsiteView(ModelView):

    list_template = 'custom_list.html'

    @action('create_meta', 'Create Meta', 'Are you sure you want to create meta data?')
    def action_createmeta(self, ids):

        print "this is my domain_name {} and this is my title {}".format(
            Website.domain_name, Website.title)


# Flask views
@app.route('/')
def index():
    return '<a href="/admin/">Click me to get to Admin!</a>'


if __name__ == '__main__':
    # Create admin
    admin = admin.Admin(app, 'Example: MongoEngine')

    # Add views
    admin.add_view(WebsiteView(Website))

    # Start app
    app.run(debug=True)
从烧瓶导入烧瓶
以管理员身份导入您的管理员
从flask_mongoengine进口mongoengine
从flask_admin.contrib.mongoengine导入模型视图
从flask_admin.actions导入操作
#创建应用程序
app=烧瓶(名称)
#创建虚拟secrey密钥以便我们可以使用会话
app.config['SECRET_KEY']='123456790'
app.config['MONGODB_SETTINGS']={'DB':'test_app'}
#创建模型
db=MongoEngine()
db.init_应用程序(应用程序)
班级网站(db.Document):
域名=db.StringField(最大长度=200)
title=db.StringField(最大长度=160)
meta_desc=db.StringField()
类网站视图(模型视图):
list_template='custom_list.html'
@操作(“创建元数据”、“创建元数据”、“是否确实要创建元数据?”)
def action_createmeta(自身,ID):
打印“这是我的域名{},这是我的标题{}”。格式(
Website.domain_name,Website.title)
#烧瓶视图
@应用程序路径(“/”)
def index():
返回“”
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#创建管理员
admin=admin.admin(应用程序“示例:MongoEngine”)
#添加视图
管理员添加视图(网站视图(网站))
#启动应用程序
app.run(debug=True)
模板/custom_list.html

{% extends 'admin/model/list.html' %} 
{% block body %} 
    <h1>Custom List View</h1> 
    {{ super() }} 
{% endblock %}

{% block list_row_actions %} 
    {{ super() }} 

  <form class="icon" method="POST" action="/admin/website/action/">
    <input id="action" name="action" value="create_meta" type="hidden">
    <input name="rowid" value="{{ get_pk_value(row) }}" type="hidden">
    <button onclick="return confirm('Are you sure you want to create meta data?');" title="Create Meta">
      <span class="fa fa-ok icon-ok"></span>
    </button>
  </form>
{% endblock %}
{%extends'admin/model/list.html%}
{%block body%}
自定义列表视图
{{super()}}
{%endblock%}
{%block list\行\操作%}
{{super()}}
{%endblock%}
输出


您正在打印的是Website.domain\u name的定义,而不是值

从中,您需要执行以下操作:

for id in ids:
    found_object = Website.objects.get(id=id)
    print "this is my domain_name {} and this is my title {}".format(
          found_object.domain_name, found_object.title)
编辑:原创文章

换线

print "this is my domain_name {} and this is my title {}".format(
        Website.domain_name, Website.title)

print "this is my domain_name {} and this is my title {}".format(
        Website.domain_name.data, Website.title.data)
您正在打印对象,而不是其中包含的已发布数据


执行此操作时,我收到一个错误:AttributeError:“StringField”对象没有属性“data”,请尝试将
网站.domain\u name
等更改为
self.domain\u name
。这样,您就可以使用从网站继承的WebsiteView类实例化对象。我相信这就是你发布的数据我以前尝试过的地方。获取另一个错误:AttributeError:“WebsiteView”对象没有属性“domain\u name”。当我把.data放在后面时,我得到了同样的错误如果你打印
ids
我相信这就是你创建的元素,你需要从数据库调用一个fetch来获取要显示的元素。是的,打印id会输出ObjectID。您能告诉我如何获取具有ids属性的数据吗。