2017-08-22 117 views
1

我有一个AngularJS前端和一个Flask后端的应用程序。AngularJS + Flask客户端路由

我在瓶下面的路由发送到index.html文件的所有请求(以及为API航线部分航线):

@app.route('/') 
def home(): 
    return render_template('index.html') 

@app.route('/api/colours') 
def colours(): 
    ... 

@app.route('/<path:page>') 
def fallback(page): 
    return redirect(url_for('home')) 

我然后用角StateProvider客户端侧的路由:

$stateProvider 
    .state('home', { 
     url: '/', 
     templateUrl: 'static/templates/home.html' 
    }) 
    .state('contact', { 
     url: '/contact', 
     templateUrl: 'static/templates/contact.html' 
    }); 

如果我开始在我的网站的根目录,然后点击一个链接带我去联系页这个伟大的工程。但是,如果我想通过键入mysite.com/contact直接转到联系页面,则会重定向主页。这是预期的。

我该如何允许它转到客户端路由(如果可用),否则重定向到主页?

+0

你是什么意思“预计哪个”?它必须告诉你contact.html对不对? – user3411864

+0

我的意思是它的预期,因为服务器端路由规则说重定向首页,因为它不知道/联系。 – DJDMorrison

+0

我明白了。正确的答案已经在这种情况下:) – user3411864

回答

1

从服务器端,如果您遇到家庭或未知路由(404),您应该返回index.html,因为您不知道客户端是否可以处理此路由。在加载index.html后,客户端路由应接管并决定是否重定向到Not found或以其他方式处理此路由。

@app.route('/<path:page>') 
def fallback(page): 
    return render_template('index.html') 
+0

这是有效的。渲染index.html是正确的,而不是路由到主页并从那里呈现index.html。谢谢@日里维纳斯! – DJDMorrison