flask + angularjs:ng-include是404&

时间:2014-06-24 15:52:12

标签: javascript python angularjs flask angularjs-ng-include

我一直在试图拼了命angularjs' NG-包括与烧瓶中的应用程序正常工作,而且好像不管我怎么努力,该GET不断归国404'd。主页面(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];
});

我也尝试了我能想到的每一条相对/绝对路径,但仍然只是404s。我也尝试更改Flask中的静态和模板文件夹。没有骰子。

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

帮助!

1 个答案:

答案 0 :(得分:2)

如果不知道c是什么或get方法做什么,就无法完全说出来,但最有可能的是你误用了templates的{​​{1}}参数。如果要将模板公开给Angular,则需要通过HTTP访问它们。 Flask的模板通过服务器端的Jinja模板引擎通过flask.Blueprint提供,并且直接通过HTTP向最终用户公开。

如果这是问题,您需要在render_template下移动angulartemplates并更改您的包含路径以正确引用static(您还可以删除关键字参数/static/angularetemplates/{your_template_name}templates初始值设定项中。