Python

Как создать сайт на Python: простой пример на Flask

Сайт на Python обычно делают не как один .html файл, а как веб-приложение: Python запускает сервер, принимает запросы из браузера и возвращает HTML-страницы. Для первого сайта проще всего использовать Flask, потому что он легкий, понятный и не заставляет сразу изучать большую архитектуру

Минимальный путь такой: установить Flask, создать файл app.py, написать один маршрут, запустить сервер и открыть адрес http://127.0.0.1:5000 в браузере

Установка Flask

Создайте папку проекта, например my_site, откройте ее в терминале и установите Flask:

python -m pip install flask

На некоторых компьютерах команда может быть такой:

python3 -m pip install flask

Проверить установку можно командой:

python -m flask --version

Если Flask установлен, терминал покажет версию Flask и Python

Первый сайт в одном файле

Создайте файл app.py:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return """
    <h1>Мой первый сайт на Python</h1>
    <p>Эта страница создана через Flask</p>
    """

if __name__ == "__main__":
    app.run(debug=True)

Запустите:

python app.py

Если все работает, в терминале появится адрес вроде:

http://127.0.0.1:5000

Откройте этот адрес в браузере. Вы увидите заголовок и текст, которые вернула функция home()

Как это работает

Строка from flask import Flask подключает класс Flask. Он нужен, чтобы создать приложение

app = Flask(__name__)

Эта строка создает объект приложения. Именно он хранит маршруты и управляет обработкой запросов

@app.route("/")
def home():
    return "..."

Декоратор @app.route("/") говорит Flask: если пользователь открыл главную страницу сайта, вызови функцию home(). То, что функция возвращает через return, браузер получает как ответ сервера

Как добавить вторую страницу

Добавим страницу /about:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "<h1>Главная страница</h1><p>Добро пожаловать</p>"

@app.route("/about")
def about():
    return "<h1>О сайте</h1><p>Это учебный сайт на Python и Flask</p>"

if __name__ == "__main__":
    app.run(debug=True)

Теперь можно открыть:

http://127.0.0.1:5000/

и:

http://127.0.0.1:5000/about

Так строятся первые страницы сайта: отдельный адрес, отдельная функция, отдельный HTML-ответ

Как вынести HTML в отдельный файл

Писать HTML прямо внутри Python удобно только для самого первого примера. Для нормального проекта создают папку templates

Структура:

my_site/
  app.py
  templates/
    index.html

Файл app.py:

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("index.html")

if __name__ == "__main__":
    app.run(debug=True)
<!doctype html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>Сайт на Python</title>
</head>
<body>
    <h1>Мой сайт на Flask</h1>
    <p>HTML лежит в отдельном файле</p>
</body>
</html>

Такой вариант ближе к реальной разработке: Python отвечает за логику, а HTML лежит отдельно

Как передать данные из Python в HTML

Flask умеет передавать переменные в шаблон:

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    user_name = "Динар"
    return render_template("index.html", name=user_name)

if __name__ == "__main__":
    app.run(debug=True)

В index.html:

<h1>Привет, {{ name }}</h1>

Браузер увидит:

Привет, Динар

Это один из главных смыслов Python на сайте: программа готовит данные, а шаблон показывает их пользователю

Чем сайт на Python отличается от обычного HTML

Обычный HTML-файл можно открыть прямо в браузере. Но он сам по себе не умеет работать с базой данных, обрабатывать формы, авторизовать пользователей и делать серверную логику

Python-сайт работает через сервер. Браузер отправляет запрос, Flask вызывает нужную функцию, Python готовит ответ, а браузер показывает результат. Поэтому при разработке сайта на Python вы запускаете локальный сервер, а не просто открываете файл двойным кликом

Мини-практика

Сделайте сайт из двух страниц: главная и страница «Контакты». На главной странице выведите название сайта и короткое описание, а на странице /contacts — email и текст «Напишите нам»

После этого вынесите HTML в папку templates и передайте в шаблон переменную site_title. Если заголовок поменяется в Python, он должен измениться на странице

Частые ошибки

Первая ошибка — открыть app.py в браузере. Python-файл нужно запускать через терминал, а в браузере открывать адрес локального сервера

Вторая ошибка — назвать файл flask.py. Тогда Python может импортировать ваш файл вместо библиотеки Flask

Третья ошибка — забыть папку templates. Flask ищет HTML-шаблоны именно там, если вы используете render_template()

Четвертая ошибка — ждать, что сайт сразу будет доступен всему интернету. Локальный адрес 127.0.0.1 открыт только на вашем компьютере

Что почитать дальше по Python

Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x