flask + angularjs: ng-include is 404'ing

flask + angularjs: ng-include is 404'ing

本文关键字:ing is angularjs ng-include flask      更新时间:2023-09-26

我一直在疯狂地尝试让angularjs的ng-include与Flask应用程序一起正常工作,似乎无论我怎么尝试,get总是返回404。主页面(angular_test.html)加载得很好,但是angular_entry.html没有加载。

瓶:

basedir = c.get('basedir')
app = Blueprint('angulartest', __name__, static_folder=basedir+'/display/static',
                template_folder=basedir+'/display/angulartemplates')
def before_blueprint_request():
    g.user = current_user
app.before_request(before_blueprint_request)
@app.route('/angular_test.html', methods=['GET'])
def ang_test():
    print 'testing angular'
    return make_response(open(basedir+'/display/templates/angular_test.html').read())
    # 
    # return app.send_static_file('angular_test.html')  (I've tried both)
HTML:

<div id='content' ng-app='FeedEaterApp' ng-controller='MainController'>
    <select ng-model="template" ng-options="t.name for t in templates">
        <option value="">(blank)</option>
    </select>
    url of the template: <tt>{{template.url}}</tt>
    <div ng-include src="'angular_entry.html'"></div>
    <div ng-include src="template.url"></div>
    <div ng-include="'angular_entry.html'"></div>
    <div ng-include="template.url"></div>
</div>

JS:

app.controller("MainController", function($scope){
    $scope.message = 'this is a message from scope!~'
    $scope.templates =
    [ { name: 'template1.html', url: 'angular_entry.html'},
      { name: 'template2.html', url: 'template2.html'} ];
  $scope.template = $scope.templates[0];
});

我也尝试了所有我能想到的相对/绝对路径,但除了404之外什么都没有。我也尝试过改变Flask中的静态和模板文件夹。不行。

Flask是否干扰了angular_entry.html上的GET ?是我的应用程序根路径设置不正确还是什么?

帮助!

如果不知道c是什么或它的get方法做什么,则不可能完全告诉,但最有可能的可能性是您错误地使用templates参数到flask.Blueprint。如果你想把模板暴露给Angular,它们需要可以通过HTTP访问。Flask的模板通过服务器端的Jinja模板引擎通过render_template提供,并且不是直接通过HTTP暴露给最终用户。

如果这是问题,您将希望将angulartemplates移动到static下,并更改包含路径以正确引用/static/angularetemplates/{your_template_name}(您还可以在Blueprint初始化器中删除关键字参数templates)。