Как ссылаться на ModelView в flask-admin

Как правильно получить URL для фляги-admin 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, etc. Ни один из них, похоже, не разрешен правильно, и я хотел бы избежать жесткого кодирования ссылки.

спасибо!

3 ответов


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}} 

на


раздел Создание URL-Адресов на фляга-введение администратора.

Он говорит "использовать строчное имя модели в качестве префикса". Добавьте точку и имя представления.

  • index_view список обзор.
  • create_view для создания новой строки.
  • edit_view для изменения существующей строки.

так что вы можете легко сделать:

url_for('user.index_view')
url_for('role.create_view')
url_for('user.edit_view', id=1)

Он должен быть!--3-->

url_for('admin.user')

Если Вы читаете колбу-admin docs здесь, для генерации URL-адресов, он ясно говорит:

If you want to generate a URL for a particular view method from outside, the following rules apply:

....

3. For model-based views the rules differ - the model class name should be used if an endpoint name is not provided.