flask angularjs: ng-include составляет 404 ‘ing

#javascript #python #angularjs #flask #angularjs-ng-include

#javascript #python #angularjs #flask #angularjs-ng-include

Вопрос:

Я изо всех сил пытался заставить angularjs ‘ng-include правильно работать с приложением Flask, и кажется, что независимо от того, что я пытаюсь, GET продолжает возвращать 404 ‘d. Главная страница (angular_test.html ) загружается нормально, но ничего из angular_entry.html .

Flask:

 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 ? Неправильно задан корневой путь моего приложения или что-то в этом роде?

помогите!

Ответ №1:

Невозможно полностью определить, не зная, что c это или что делает его get метод, но наиболее вероятная возможность заключается в том, что вы неправильно используете templates аргумент to flask.Blueprint . Если вы хотите предоставить шаблоны Angular, они должны быть доступны через HTTP. Шаблоны Flask передаются через механизм создания шаблонов Jinja на стороне сервера render_template и не передаются конечному пользователю напрямую по HTTP.

Если это проблема, вы захотите перейти angulartemplates static и изменить пути включения, чтобы правильно ссылаться /static/angularetemplates/{your_template_name} (вы также можете удалить аргумент ключевого templates слова в своем Blueprint инициализаторе).

Комментарии:

1. это просто захватывает базовый каталог для приложения. Он возвращает: ‘/home/jmadison/Development/FeedEater /feedeater’. Я попытался изменить ключевое слово template для схемы элементов, отделив угловые шаблоны от шаблонов flask, а также полностью удалив шаблон и статические ключевые слова. Я попытался переместить угловые шаблоны в статическую папку.

2. @jake — тогда лучше добавить эту информацию к вопросу 🙂

3. ха-ха, верно! НО я нашел комбинацию, которая сработала! <div ng-include src=»‘/static/angulartemplates/angularentry.html ‘»></div> После перехода к статическому, очевидно. Спасибо!!

4. Да, пропустил ведущую статику — извиняюсь за это.