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>

Комментарии

  1. Илья

    Хороший пост и отличная информация

Добавить комментарий