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. Для соседних задач пригодятся эти разборы:
- Как подключить HTML к Python: Flask, шаблоны и простой пример
- Как сделать ИИ на Python: простой проект без магии
- Как сделать калькулятор на Питоне: простой код для начинающих
- Как сделать конвертер валют на Python: простой проект для начинающих