为什么我无法从我的index.html模板访问我的管理员登录和注销页面

时间:2015-11-30 18:04:26

标签: python flask flask-admin

我很困惑为什么我无法从我的基本模板访问我的flask-admin登录和注销页面。有人可以帮助我吗?

这是我在github上找到的一个例子中稍微修改了我的flask-admin代码:

class MyAdminIndexView(AdminIndexView):
  @expose('/')
  def index(self):
    if not flask_login.current_user.is_authenticated:
        return redirect(url_for('.login_view'))
    return super(MyAdminIndexView, self).index()

@expose('/login/', methods=('GET', 'POST'))
  def login_view(self):
    form = LoginForm(request.form)
    if helpers.validate_form_on_submit(form):
        user = form.get_user()
        flask_login.login_user(user)

    if flask_login.current_user.is_authenticated:
        return redirect(url_for('.index'))
    self._template_args['form'] = form
    return super(MyAdminIndexView, self).index()

@expose('/logout/')
  def logout_view(self):
    flask_login.logout_user()
    return redirect(url_for('.login_view'))

admin = Admin(app,name =' BlackDuck Flock',index_view = MyAdminIndexView(),template_mode =' bootstrap3')

我无法弄清楚如何从templates/index.html

中获取这些观点

我在导航栏的视图中尝试了这些选项:

 <ul class="nav navbar-nav navbar-right">
    <li><a href={{ url_for('.login_vew') }}>Login</a></li>
    <li><a href={{ url_for('.logout_view') }}>Logout</a></li>
 </ul>

 <ul class="nav navbar-nav navbar-right">
    <li><a href={{ url_for('admin.login_vew') }}>Login</a></li>
    <li><a href={{ url_for('admin.logout_view') }}>Logout</a></li>
 </ul>

<ul class="nav navbar-nav navbar-right">
    <li><a href={{ url_for('/login_vew') }}>Login</a></li>
    <li><a href={{ url_for('/logout_view') }}>Logout</a></li>
 </ul>

# At this point I'm guessing now......

<ul class="nav navbar-nav navbar-right">
    <li><a href={{ url_for('/admin/login') }}>Login</a></li>
    <li><a href={{ url_for('./admin/logout') }}>Logout</a></li>
 </ul>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。基本上我需要做的就是为管理界面创建一个环绕,如下所示:

@app.route('/login')
def login():
  return redirect(url_for('admin.login_view'))

@app.route('/logout')
def logout():
  return redirect(url_for('admin.logout_view'))