7

Flask-admin の URL を取得する正しい方法は何ModelViewですか?

非常に簡単な例を次に示します。

my_admin_view.py

from flask.ext.admin.contrib.sqla import ModelView
from common.flask_app import app
from models import db, User, Role

admin = Admin(app, name="Boost Admin")

admin.add_view(ModelView(User,  db.session, category="model"))
admin.add_view(ModelView(Role,  db.session, category="model"))

my_admin_template.html

...
<p>Check out my user admin link:</p>

<a href="{{ url_for('modelview.user') }}">User view link</a>
{#                   ______________ 
                     what argument to pass in here??      #}
...

に渡す正しい引数は何url_for(...)ですか?

modelview.user、などを試しましたが、my_admin_view.modelview.userどれも正しく解決されていないようで、リンクのハードコーディングは避けたいと思います。

ありがとう!

4

3 に答える 3

12

OK ModelView のソースコードを読んだ後、私はそれを理解しました。

まず、エンドポイントに名前が付けられていることを確認します (エンドポイントに名前を付けなくても実行できますが、これによりコードがより明確になります)。

from flask.ext.admin.contrib.sqla import ModelView
from models import db, User, Role

admin = Admin(app, name="Boost Admin")

admin.add_view(ModelView(User,db.session,category="model", endpoint="model_view_user"))
admin.add_view(ModelView(Role,db.session,category="model", endpoint="model_view_role"))

...テンプレートでは、次のように基本的なモデル ビューを参照できます。

URL for User model default view is: {{model_view_user.index_view}} 
URL for Role model default view is: {{model_view_role.index_view}} 

index_view関数はここで定義され flask admin ModelView のデフォルト ビューを実装します。

于 2014-02-01T01:02:07.340 に答える
5

Flask-Admin イントロダクションのセクション生成 URLを参照してください。

「モデルの小文字の名前をプレフィックスとして使用する」と書かれています。ドットとビューの名前を追加します。

  • index_view概要リストについては。
  • create_view新しい行を作成します。
  • edit_view既存の行を変更するため。

だからあなたは簡単に行うことができます:

url_for('user.index_view')
url_for('role.create_view')
url_for('user.edit_view', id=1)
于 2016-03-01T10:37:14.420 に答える