App Engine: как настроить app.yaml для фляжного приложения? Ошибка: index.html не найден

Я создал приложение Flask, используя Python 3.7. Установка работает локально. При загрузке в GAE я получаю внутреннюю ошибку сервера. На приборной панели GAE указано, что index.html не найдено. Эта проблема связана с файлом app.yaml?

Структура моего проекта выглядит следующим образом:

root/
|-app.yaml
|-requirements.txt
|-main.py
|-other model files that feed into main.py
|-templates/
    |-index.html
    |-index2.html
    |-js
    |-css
    |-images

приложение.yaml

    runtime: python37

    # [START handlers]
    handlers:
    - url: /.*
      script: auto

    - url: /index.html
      static_files: templates/index.html
      upload: Templates/index.html

    - url: /templates
      static_dir: Templates

    - url: /(.*\.(css|js|png|jpg))
      static_files: templates/\1
      upload: templates/(.*)
    # [END handlers]

person SangyH    schedule 20.08.2019    source источник
comment
Примечание: шаблоны app.yaml чувствительны к регистру, и вы используете в своем сообщении как Templates, так и templates. Конечно, ваше изображение IDE показывает, что это просто содержимое сообщения.   -  person Dan Cornilescu    schedule 20.08.2019
comment
Спасибо, Дэн. Я считаю, что это было частью проблемы. Теперь она работает.   -  person SangyH    schedule 20.08.2019


Ответы (1)


В документации App Engine handlers element указано:

Шаблоны оцениваются в том порядке, в котором они появляются в файле app.yaml, сверху вниз. Первое сопоставление, шаблон которого соответствует URL-адресу, используется для обработки запроса.

  • Поместите универсальный обработчик в конец.
  • Каталог templates не нужно добавлять в обработчики URL.
  • По соглашению каталог templates должен быть в нижнем регистре. Кроме того, в случае, если обработчикам URL-адресов необходимо ссылаться на templates, шаблоны app.yaml чувствительны к регистру (как упоминалось Dan Cornilescu), а использование строчных букв поможет избежать несоответствий.
  • Стандартная настройка заключается в создании отдельного каталога static (и/или assets) рядом с каталогом templates. Каталог static будет содержать такие файлы, как Javascript, CSS и изображения.

Структура проекта

root/
|-app.yaml
|-requirements.txt
|-main.py
|-other model files that feed into main.py
|-static/
    |-js
    |-css
    |-images
|-templates/
    |-index.html
    |-index2.html

приложение.yaml

runtime: python37

handlers:
- url: /static
  static_dir: static

- url: /.*
  script: auto

person Christopher Peisert    schedule 20.08.2019
comment
Спасибо за предложение. Пробовал, но все равно получил ту же ошибку. Вот скриншот отладчика, если это поможет. imgur.com/Ec0Yzbi - person SangyH; 20.08.2019
comment
@SangyH Ответ обновлен со стандартной настройкой проекта. Явный обработчик URL для шаблонов Flask не требуется. - person Christopher Peisert; 20.08.2019
comment
Спасибо!!! это сработало. Сначала я обновился до стандартной настройки проекта. У меня все еще была проблема с index.html, не найденная. Затем я увидел комментарий Дэна Корнилеску о проблемах с шаблонами и шаблонами. Затем я начал заново и создал новое приложение, на этот раз с папкой под названием templates, и оно, наконец, сработало. - person SangyH; 20.08.2019
comment
Я бы предложил также включить в этот ответ поведение, связанное с использованием заглавных букв в «шаблонах». Это задокументировано @DanCornilescu в виде комментария к исходному сообщению. - person JKleinne; 21.08.2019
comment
@JKleinne Спасибо за заметку. Ответ обновлен, чтобы включить примечание Дэна Корнилеску в папку templates нижнего регистра из-за чувствительности к регистру app.yaml. - person Christopher Peisert; 21.08.2019