Как ссылаться на 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.