Flask — это веб-фреймворк на языке Python. Запуск возможен на всех хостинговых тарифах. Мы оставили возможность самостоятельной установки пакетов, т.к. возможно Вам нужна не та версия пакета, которая будет доступна глобально или понадобится пакет, которого не будет на хостинге из соображений безопасности и стабильности.
Подготовка
Вам понадобятся следующие пакеты:
Их можно загрузить с сайта разработчика. Необходимо закачать архивы пакетов, распаковать их и положить в доступном для приложения месте.
Пример I
Установка выполняем через SSH
wget https://bootstrap.pypa.io/ez_setup.py python ez_setup.py --user ~/.local/bin/easy_install --user flask
Пример II
- Скачиваем пакет click со страницы https://pypi.python.org/pypi/click
- Загружаем архив click-X.X.tar.gz на хостинг через FTP клиент или файловый менеджер DirectAdmin
- Распаковываем архив
- Перемещаем подкаталог click, находящийся в каталоге click-X.X в директорию public_html Вашего домена
- Удаляем мусор (архив click-X.X.tar.gz и каталог click-X.X
Минимальный проект Flask
Все указанные файлы и подкаталоги создаём в директории public_html Вашего домена.
.htaccess
Необходим для перенаправления запросов на основной скрипт
Options -Indexes +ExecCGI AddHandler cgi-script .py DirectoryIndex run.py RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !/run.py RewriteRule ^(.*)$ /run.py/$1 [L]
run.py
Основной файл запуска приложения. Необходимо установить права на выполнение +x
#!/usr/bin/env python # -*- coding: UTF-8 -*- from wsgiref.handlers import CGIHandler from myapp import app CGIHandler().run(app)
myapp/__init__.py
#!/usr/bin/env python # -*- coding: UTF-8 -*- import os, sys sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from flask import Flask template_path = os.path.join(os.path.dirname(__file__), 'templates') app = Flask(__name__, template_folder=template_path) app.debug = True import views
myapp/views.py
#!/usr/bin/env python # -*- coding: UTF-8 -*- import sys from myapp import app from flask import Flask, render_template, request, escape, redirect, jsonify @app.route('/', methods=['GET']) def index(): """Главная страница""" title = 'Python Flask' body = render_template('index.html', title=title) return body
myapp/templates/index.html
<html> <head> <title>{{ title }}</title> </head> <body> <h1>test</h1> <ul> <li><a href="/page1">page1</a></li> </ul> </body>
Хороший пост и отличная информация