AngularJS中的链接未调用Flask端点

时间:2016-01-18 12:22:26

标签: python angularjs flask

代码段:

app.config

  $locationProvider.html5Mode({
    enabled: true,
    requireBase: false
  });

  $urlRouterProvider
    .when('logout', '/logout')
    .otherwise('/');

Relevant HTML

<li><a href="/logout">Logout</a></li>

Flask endpoint

@app.route("/logout")
@login_required
def logout():
    logout_user()
    return redirect(url_for("login"))

我还在HTML的标题中设置了<base href="/"></base>。但是,点击链接不会导致任何事情发生(字面上没有任何反应)。

是什么给出了?

2 个答案:

答案 0 :(得分:1)

因为注销请求永远不会到达您的服务器。您需要创建一个与实际向烧瓶终点发出请求的注销路径相关联的LogoutController。

答案 1 :(得分:0)

通过两次阅读AngularJS文档并在那里找到this little gem来解决这个问题。在这里提供答案,以便帮助其他开始在Flask-Angular中开发的人。

引用:

  

Html链接重写

     

使用HTML5历史记录API模式时,您不需要特殊的   hashbang链接。您所要做的就是指定常规URL链接   as:<a href="/some?foo=bar">link</a>

     

当用户点击此链接时,

     
      
  • 在旧版浏览器中,网址更改为/index.html#!/some?foo=bar
  •   
  • 在现代浏览器中,网址更改为/some?foo=bar
  •   
     

如下所示,链接不会被重写;相反,   浏览器将执行整页重新加载到原始链接。

     
      
  • 包含target元素的链接
      示例:<a href="/ext/link?a=b" target="_self">link</a>
  •   
  • 转到其他域的绝对链接   示例:<a href="http://angularjs.org/">link</a>
  •   
  • 以'/'开头的链接导致不同的基本路径   示例:<a href="/not-my-base/link">link</a>
  •   

基本上,改变这个:

<li><a href="/logout">Logout</a></li>

到此:

<li><a href="/logout" target="_self">Logout</a></li>

解决了这个问题。