AngularJS + Flask客户端路由

时间:2017-08-22 13:52:42

标签: python angularjs flask

我有一个带有AngularJS前端和Flask后端的应用程序。

我在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'))

然后我使用Angular StateProvider进行客户端路由:

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

如果我从网站的根目录开始并点击链接将我带到联系页面,这非常有用。但是,如果我想通过输入mysite.com/contact直接转到联系页面,它会重定向主页。这是预期的。

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

1 个答案:

答案 0 :(得分:1)

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

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