【发布时间】:2016-04-02 10:15:05
【问题描述】:
我对 Flask/Flask-Admin 很陌生。 我已经按照烧瓶管理员的教程并设法让管理面板工作,但对如何实现以下内容略有迷失。 https://github.com/flask-admin/flask-admin/tree/master/examples/auth
-
以普通用户身份登录时,我只能看到“主页”页面。 如何向“普通用户”公开其他视图并限制只读等操作。
-
我创建了一个“baseview”,它与以下任何其他模型都没有关联:
class SitesView(MyBaseView): @expose('/') def index(self): return self.render('views/testviews.html') admin.add_view(SitesView(name='Test views', endpoint='test views'))
和html如下:
{% extends 'admin/master.html' %}
{% block body %}
{{ super() }}
{% if current_user.has_role('view1') %}
<a href="#">Site1</a>
{% endif %}
{% if current_user.has_role('view2') %}
<a>Site2</a>
{% endif %}
{% if current_user.has_role('view3') %}
<a>Site3</a>
{% endif %}
{% if current_user.has_role('view4') %}
<a>Site4</a>
{% endif %}
{% endblock %}
这为我提供了一个具有不同视图的新标签,并按预期工作。
我在这里想要实现的是,当用户单击 Site1 链接时,他们会转到烧瓶管理界面中的 Site1 页面,但我不知道该怎么做。我可以为此创建一条新路线,但问题是我不能(不知道如何)扩展烧瓶管理模板。
例如,这可行,但它会将页面重定向到烧瓶管理模板之外:
@app.route('/views/') def views(): return render_template('views/views1.html')
并修改了模板>admin>index.html 页面如下:
<ul class="lead text-center list-group">
{% if current_user.has_role('view1') %}
<li class="list-group-item"><a href="{{ url_for('views') }}">View1</a></li>
{% endif %}
{% if current_user.has_role('view2') %}
<li class="list-group-item"><a href="#">View2</a></li>
{% endif %}
{% if current_user.has_role('view3') %}
<li class="list-group-item">View3</li>
{% endif %}
{% if current_user.has_role('view4') %}
<li class="list-group-item">View4</li>
{% endif %}
</ul
我想使用flask admin 构建整个网站,这样我就可以保持用户体验的一致性。我这样做是不是错误的方式?
感谢您的宝贵时间。
如果您希望我提供有关此问题的更多信息,请告诉我。
亲切的问候。
【问题讨论】:
标签: python-2.7 flask flask-admin